我试图弄清楚如何通过 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 对象。job->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 行中看到的那样链接代码,而不是发送 urlencoded 数据。
有什么提示吗?