php - 使用 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 为空...
任何帮助或建议将不胜感激!!!请~谢谢!!!
解决方案
我想到了!
事实证明我应该使用获取请求(为了获取我的数据),而不是帖子。所以我直接将我的 url 写到...http:// ?request_id=,并删除了所有关于 request 的选项行(因为默认过程是 get,而不是 post),它起作用了!我花了 7 个小时才弄清楚这一点……TAT
推荐阅读
- php - php 按键向多维数组中插入数据
- android - 获取在画布内绘制的多边形内的点,并缩放包含画布的相对布局
- typescript - Argument of type '{ [x: string]: any; }' is not assignable to parameter of type 'string[]'
- html - 当它折叠时,如何在这个引导导航栏中将链接的文本居中?
- c# - 如何自动模拟现有的模拟对象?
- create-react-app - 如何在不公开托管的情况下从 create-react-app 将源地图上传到 Rollbar.js?
- html - 如何使用 CSS 从 li 中删除单词?
- tomcat - Tomcat 8 - 在不更改 server.xml 的情况下启用 RewriteValve
- r - How to select random columns from a dataset
- mysql - 根据给定的数组集动态替换结果值