【问题标题】:Why does $status = 0 After Using curl_exec($curl)?为什么使用 curl_exec($curl) 后 $status = 0?
【发布时间】:2016-07-08 20:18:54
【问题描述】:

我正在尝试使用 DocuSign API 创建recipientView。我正在尝试使用 cURL 库在 PHP 中发布请求,但由于某种原因,在执行我的代码时,下面代码中的 $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); 行返回 0:

$url = "http://demo.docusign.net/restapi/v2/accounts/$account_id/envelopes/
        $envelope_id/views/recipient";

$body = array("returnUrl" => "http://www.docusign.com/devcenter",
                "authenticationMethod" => "None", 
                "email" => "$recipient",
                "userName" => "$recipient");

$body_string = json_encode($body);

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Accept: application/json',
    'Content-Type: application/json',
    'Content-Length: '.strlen($body_string),
    'Authorization: Bearer '.$access_token
));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body_string);

$json_response = curl_exec($curl);

$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

echo $status;

$response = json_decode($jason_response, true);
$url = $response["url"];

我通过 JSON 发送 POST,我应该得到的响应是 JSON。为什么我的curl_exec() 失败并生成$status = 0

【问题讨论】:

  • 尝试在curl_exec 调用之后添加curl_error($curl),看看是否返回任何错误消息。
  • 执行此操作时的错误是:无法连接到 demo.docusign.net 端口 80:连接被拒绝
  • 那就是问题所在。我用这些信息添加了一个答案。

标签: php json post curl docusignapi


【解决方案1】:

错误信息的原因

Failed to connect to demo.docusign.net port 80: Connection refused

是您尝试连接到 HTTP 端口 80 但 docusign.net 只侦听 HTTPS 端口 443。

将 API URL 从 http:// 更改为 https://,您应该已设置好,curl_getinfo() 也会返回正确的值。

【讨论】:

    【解决方案2】:

    您没有包含身份验证标头。对 API 的每次调用都需要进行身份验证。

    Docs about Authentication options

    【讨论】:

    • 即使我添加了身份验证标头(使用访问令牌),我也会得到相同的响应。我已经更新了我的问题。
    【解决方案3】:

    curl_exec 期间出现错误时,curl_getinfo($curl, CURLINFO_HTTP_CODE); 的结果将为零。由于您发现 curl_error 返回以下内容:

    连接 demo.docusign.net 80 端口失败:连接被拒绝

    结果为零。

    您必须弄清楚 DocuSign 拒绝您的连接的原因(查看他们的 API 文档)。一旦你弄清楚并修复它,你应该得到一个正确的 JSON 结果以及一个有效的 HTTP 状态代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-04
      • 2017-05-01
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2016-11-23
      • 2021-11-16
      相关资源
      最近更新 更多