我正在尝试如何通过PHP将这种数据发送到RESTful服务:
{
"api_version": 1.0,
"project_id" : 123,
"batch_id" : 111,
"accesskey" : "abc123",
"job": {
"file": file,
"word_count": 111,
"title": "FAQ",
"cms_id": "page_123_en_sp",
"url" : "http://original_post_url.com",
"is_update": false,
"translator_id": 123,
"note": "Translate these words",
"source_language": "en",
"target_language": "it"
}
}
首先,我不能使用curl,因为使用这段代码的人可能没有安装它,或者可能不允许安装它。
这不是一个“正常”的JSON对象。
工作->file属性是一个实际的文件(甚至不是文件的url)。
这是我用来发送所有请求的实际代码,在我遇到这个特定情况之前,它一直有效:
http://pastebin.com/6pEjhAkg
“file”属性的创建方式如下:
$file = generate_file( $content );
protected static function generate_file($content) {
$file = fopen('php://temp','r+');
fwrite($file, $content);
rewind($file);
return $file;
}
现在,当发送数据时,如果在PHP端正确设置了$params参数,RESTful将返回一个关于缺少“api_version”和“project_id”的错误,但它们存在。
我很确定问题是他没有以JSON的形式接收数据,但我如何才能将其财产中包含文件指针资源的对象转换为JSON?
发送数据和构建文件的代码是由一名前开发人员创建的,我无法与他联系。
我试图了解那里的问题,到目前为止,我唯一解决的问题是实际发送JSON数据(当$multipart==false时),如链接代码的第16-19行所示,而不是发送URL编码的数据。
有什么提示吗?