我正在使用curl和php发送API请求。第一个有效,但第二个无效。错误显示postfields数据为空,或者整个请求为null。我很困惑。
这是我的代码
$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为空...
任何帮助或建议将不胜感激!!!拜托〜谢谢!!!
答案 0 :(得分:0)
我知道了!
事实证明,我应该使用get请求(以便获取我的数据),而不是帖子。 因此,我直接将我的网址写到... http:// ?request_id = ,并删除了有关请求的所有选项行(因为默认过程是get,而不是post ),并且有效! 我花了7个小时才弄明白了... TAT