cUrl-PHP-Get请求返回400个错误请求,但在Postman中有效
我有一个简单的API调用,它接受url中的参数,并在标头中发送一个承载令牌。我已经打印出url,并用应用的承载令牌粘贴到Postman中,它可以工作,但在PHP中,我不断收到400个错误请求。代码如下:cUrl-PHP-Get请求返回400个错误请求,但在Postman中有效,php,curl,Php,Curl,我有一个简单的API调用,它接受url中的参数,并在标头中发送一个承载令牌。我已经打印出url,并用应用的承载令牌粘贴到Postman中,它可以工作,但在PHP中,我不断收到400个错误请求。代码如下: $ch = curl_init(); $authorization = 'Authorization: Bearer oireuoijgosrhj9r9regjoregojgjoislgfjs'; $validate_url = 'https://api.mycustom
$ch = curl_init();
$authorization = 'Authorization: Bearer oireuoijgosrhj9r9regjoregojgjoislgfjs';
$validate_url = 'https://api.mycustomapi.com/api/envelopes/validate/' . $auth_id .'/' . $content_hash . '/' . $envelope_id;
curl_setopt($ch, CURLOPT_URL, $validate_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($authorization ));
$response = curl_exec($ch);
$json = json_decode($response, true);
$sigVer = $json['signatureVerified'];
// Check HTTP status code
if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200: # OK
echo 'response is: ', $sigVer, "\n";
break;
case 502: # server error
system_message('Received 500 Error from Server');
break;
case 400: # bad request
echo 'url is: ', $validate_url, "\n";
system_message('Simple validation must have exactly one content item');
break;
default:
echo 'Unexpected HTTP code: ', $validate_url, "\n";
}
}
curl_close($ch);
在《邮递员》中,我得到了预期的回应。。。不知道为什么cUrl-Php的行为会有所不同
“验证url”的计算结果为:
在postman中使用此url时,我得到以下json响应:
{
"errorCode": 0,
"errorMessage": null,
"envelopeId": 140,
"blockchainAddress": "0xA300991F77519B5f30552F74779eeEdE398fA59e",
"clientData": "",
"signatureVerified": true
}
我正在设置的postman中唯一的设置是授权承载令牌,它在我的cUrl请求中设置为相同的承载令牌。然而,我在这篇文章中没有使用我真正的令牌或api url
如果我做一个
var_dump($response);
die();
我在屏幕上看到的只是
字符串(800)”
HTTP状态400–错误请求
“找出了问题所在。很简单,我在“validate_url”字符串中插入的一个变量没有进行url编码,因为该变量的一部分有一个“/”字符,它被解释为一个错误的请求。我们不知道您在postman中做了什么,您也没有向我们展示该API端点的任何文档,因此,我们无法判断您向我们展示的cURL请求是否以相同的格式发送相同/正确的数据。首先检查
$response
实际包含的内容。现在,您只查看HTTP状态代码,但响应正文中可能包含实际的错误消息。了解postman和api。我想知道我的请求是否有根本性的错误。如果我将$auth\u id、$content\u hash和$envelope\u id的值插入“validate\u url”的打印输出,然后在postman中使用该url和承载令牌,我会得到预期的结果。因此postman允许您用Php为请求生成代码,所以我这样做了,并将其插入到我的服务中,仍然收到400个错误的请求。