首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在cURL请求中转义REST Api

在cURL请求中转义REST Api
EN

Stack Overflow用户
提问于 2015-03-04 15:29:55
回答 1查看 1.4K关注 0票数 1

我正在使用REST,它使用http://{server}/api/rest/products/{id}.json格式作为获取产品数据的GET请求。我们要求{id}包含句点字符("."),这总是导致404错误,因为服务器无法正确地解释它。在没有期限的情况下,请求得到了适当的满足。我尝试用%2E替换句点,但服务器会立即将其转换回句点。是否有任何方法正确地转义cURL GET请求的句点字符?

代码:

代码语言:javascript
运行
复制
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://" . $server . "/api/rest/products/" . $sku . ".json");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-16 15:34:46

解决办法是用一个不同的字符串来代替这段时间。我修改了API以在服务器端执行字符串替换,并通过cURL从客户端传递十六进制代码('_0x2E_')。然后,API执行字符串替换以恢复到原始值。这可以正常运行,因为服务器不像以前那样将替换的文本视为文件扩展名的开头。额外的下划线和0x是安全网。

调整样本代码:

代码语言:javascript
运行
复制
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://" . $server . "/api/rest/products/" . str_replace('.', '_0x2E_', $sku) . ".json");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);

我希望这对任何处理类似情况的人都有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28858318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档