我的PHP代码运行时带有响应:参数 - "令牌"失踪,我不知道为什么,我很确定令牌是正确的。
示例图片:
<?php
{
$url = "http://r.catchoom.com/v1/search";
$queryimg = "saestor://image/2222.jpg";
$token="5fb568dc8b5041b1";
$post_data = array ('token' =>"5fb568dc8b5041b1;type=text/plain",'image' =>"@$queryImg;type=image/jpeg");
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-type: multipart/form-data;charset=UTF-8'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result =curl_exec($ch);
curl_close($ch);
var_dump($result);
}
答案 0 :(得分:0)
尝试从$post_data
中删除令牌密钥值对的文件类型说明符。只有在您发布文件时才能使用文件类型。
$post_data = array ('token' =>"5fb568dc8b5041b1",'image' =>"@$queryImg;type=image/jpeg");
另外,根据PHP的cURL文档。在POSTFIELDS中发布文件已被弃用,应使用curl_file_create( )函数完成。
鉴于这些信息,您应该尝试以下方法:
$queryimg = "saestor://image/2222.jpg";
$token= "5fb568dc8b5041b1";
$image_to_post = curl_file_create($queryimg, 'image/jpeg', '2222.jpg');
$post_data = array ('token' => $token, 'image' => $image_to_post);
对于PHP的版本&lt; 5.5,您可以使用下面的代码重新创建curl_file_create( )
的功能,cURLFile
是if (!function_exists('curl_file_create')) {
function curl_file_create($filename, $mimetype = '', $postname = '') {
return "@$filename;filename="
. ($postname ?: basename($filename))
. ($mimetype ? ";type=$mimetype" : '');
}
}
构造函数的别名。
{{1}}
如果您仍然无法使解决方案正常工作,我只会使用PHP SDK Catchoom开发的内容。 SDK很难出错!他们甚至包括example。