cUrl-PHP-Get请求返回400个错误请求,但在Postman中有效

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

我有一个简单的API调用,它接受url中的参数,并在标头中发送一个承载令牌。我已经打印出url,并用应用的承载令牌粘贴到Postman中,它可以工作,但在PHP中,我不断收到400个错误请求。代码如下:

    $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个错误的请求。