cURL PHP API调用不起作用

乔奈特

尝试对WEocr进行cURL PHP API调用,但API无法收到响应。这是我正在使用的代码:

    $url = 'http://jimbocho.ocrgrid.org/cgi-bin/weocr/submit_ocrad.cgi';
    $header = array('Content-Type: multipart/form-data');
    $fields = array('userfile' => '@' . $_FILES['file']['tmp_name'][0]);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    $result = json_decode(curl_exec($ch));

我不知道我是否在编写cURL命令的语法不正确。

提前致谢。

我得到的错误:

Sorry!
Received a null image (0byte). See TIPS page. 
佩德罗·洛比托

我想您的路径不正确,请尝试以下操作:

$url = 'http://jimbocho.ocrgrid.org/cgi-bin/weocr/submit_ocrad.cgi';
$file_name_with_full_path = '/home/example/dir/sample.jpeg';
$post = array('userfile'=>'@'.$file_name_with_full_path);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result=curl_exec ($ch);
curl_close ($ch);

根据您的评论进行更新,也可以尝试以下操作:

$file_new = /path/to/your/file.jpg
$cmd="curl -F userfile=$file_new \ 
      -F outputencoding=\"utf-8\" \
      F outputformat=\"txt\" \ 
      http://maggie.ocrgrid.org/cgi-bin/weocr/ocr_scene.cgi >result.txt"
$result = shell_exec($cmd);
print_r($result);

注意:CURLOPT_POST 1如果您要使用CURLOPT_POSTFIELDS无需进行设置,curl会自动为您完成设置。Content-Type: multipart/form-data如果发布内容是数组,Curl也会设置,这就是您的情况,也不需要这样做。


CURLOPT_POSTFIELDS

要在HTTP“ POST”操作中发布的完整数据。要发布文件,请在文件名前添加@并使用完整路径。可以通过在文件名后跟随类型为'; type = mimetype'的类型来明确指定文件类型。此参数可以作为urlencoded字符串(如“ para1 = val1&para2 = val2&...”)传递,也可以作为字段名称为键且字段数据为值的数组传递。如果value是一个数组,则Content-Type标头将设置为multipart / form-data从PHP 5.2.0开始,如果使用@前缀将文件传递给此选项,则value必须是一个数组。从PHP 5.5.0开始,不赞成使用@前缀,并且可以使用CURLFile发送文件。通过将CURLOPT_SAFE_UPLOAD选项设置为TRUE,可以禁用@前缀以安全地传递以@开头的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章