发出 GET Curl 请求时使用时间戳参数出错

Posted

技术标签:

【中文标题】发出 GET Curl 请求时使用时间戳参数出错【英文标题】:Error using timestamp parameter when making GET Curl request 【发布时间】:2022-01-22 10:04:42 【问题描述】:

在使用 Curl 发出 GET 请求时在日期参数中使用时间戳时,我收到 “403 Forbidden” 错误。

这是我使用 Curl 发出 GET 请求的代码:

         $curl = curl_init($url);
         curl_setopt($curl, CURLOPT_URL, $url);
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
         $result = curl_exec($curl);
         $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
         curl_close($curl);

当仅使用参数中的日期时,它按预期工作:

$url = "https://api.unleashedsoftware.com/Customers?modifiedSince=2021-12-20";

但是,包括时间格式会导致 “403 Forbidden” 错误。

$url = "https://api.unleashedsoftware.com/Customers?modifiedSince=2021-12-20T10:00:10";

这个我也试过了,还是不行:

$url = "https://api.unleashedsoftware.com/Customers?modifiedSince=2021-12-20T10%3A00%3A00";

我已经在应用程序沙箱中直接使用相同的 URL 参数进行了测试,以检查它是否接受这些参数,它确实可以正常工作:

任何帮助将不胜感激。

谢谢

【问题讨论】:

您是否尝试过对参数值应用正确的 URL 编码?当您向 cURL 传递一个已经完全组装好的 URL 时,cURL 不会自行为您执行此操作。 【参考方案1】:

我认为查询中不允许使用 ':',请尝试在 '' 之间使用日期时间 或者使用数据传递日期时间值

【讨论】:

以上是关于发出 GET Curl 请求时使用时间戳参数出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 CURL 添加请求时间戳

关于在php中使用curl发送get请求时参数传递问题的解析

alamofire 499 使用标头和参数发出获取请求时

为什么浏览器可以在JMeter和Curl发出时发出XHR POST请求

PHP/Curl:在下载正文之前检查响应标头

在 WSO2 ESB 4.0.3 中验证 GET 请求参数时出错