php卷曲请求字段未命中?

时间:2014-04-02 06:00:48

标签: php post curl libcurl

我的PHP代码运行时带有响应:参数 - "令牌"失踪,我不知道为什么,我很确定令牌是正确的。

示例图片: Sample Image

<?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);
}

1 个答案:

答案 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( )的功能,cURLFileif (!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