首页 > 解决方案 > 使用 php 和 curl 发送 api 请求时出错

问题描述

我正在使用 curl 和 php 发送 API 请求。第一个有效,但第二个无效。错误显示 postfields 数据为空,或者整个请求为空。我很困惑。

这是我的代码

$request_id = "aaa7996d-8d5c-4116-b759-6afb1c84ff39";
$res_url = "http://opeapi.ws.pho.to/getresult";
$res_data = array('request_id'=>$request_id);
$res_ch = curl_init();
curl_setopt($res_ch, CURLOPT_URL, $res_url);
curl_setopt( $res_ch, CURLOPT_POST, true );
curl_setopt($res_ch, CURLOPT_POSTFIELDS,$res_data);
curl_setopt($res_ch, CURLOPT_RETURNTRANSFER, 1);
$results = curl_exec($res_ch);
curl_close($res_ch);
var_dump($results);

但结果返回:

SecurityError612Bad, invalid or empty REQUEST_ID parameter.

以下是我尝试的几件事:

$res_data = array('request_id'=>urlencode($request_id));
$res_data = "request_id=".$request_id;
$res_data1 = json_encode($res_data);
$res_data1 = http_build_query($res_data);

$res_url = "http://opeapi.ws.pho.to/getresult?request_id=aaa7996d-8d5c-4116-b759-6afb1c84ff39";

它们都没有真正起作用。

但奇怪的是我在此之前还有另一个要求。也使用 Pho.to API。我使用他们的参数处理了一张照片,并使用 curl 和 php 得到了结果。那个有效(这就是为什么我得到 request_id 来获得处理结果)

这是我以前的要求。它有效,为什么不是第二个?

$data = '(some xml parameters)';

$sign_data = hash_hmac('SHA1', $data,'***');
$url = "http://opeapi.ws.pho.to/addtask";
$posting = array('app_id'=>'***','key'=>'***','sign_data'=>$sign_data,'data'=>$data);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_POSTFIELDS,$posting);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);

错误消息提示没有 request_id... 或整个请求 $curl 为空...

任何帮助或建议将不胜感激!!!请~谢谢!!!

标签: phpcurl

解决方案


我想到了!

事实证明我应该使用获取请求(为了获取我的数据),而不是帖子。所以我直接将我的 url 写到...http:// ?request_id=,并删除了所有关于 request 的选项行(因为默认过程是 get,而不是 post),它起作用了!我花了 7 个小时才弄清楚这一点……TAT


推荐阅读