gpt4 book ai didi

PHP curl_exec 返回以空格分隔的 HTTP/1.1 100 Continue 和 HTTP/1.1 200 OK

转载 作者:IT王子 更新时间:2023-10-28 23:47:57 27 4
gpt4 key购买 nike

我正在使用 cURL 从 PHP 调用服务,如下所示:

$response = curl_exec($ch);

请求/响应 header 看起来像这样:

要求:

POST /item/save HTTP/1.1
Host: services.mydomain.com
Accept: */*
Content-Length: 429
Expect: 100-continue
Content-Type: multipart/form-data

响应:

HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Fri, 06 Jul 2012 08:37:01 GMT
Server: Apache
Vary: Accept-Encoding,User-Agent
Content-Length: 256
Content-Type: application/json; charset=utf-8

紧随其后的是正文(json 编码数据)。

问题是常见的事情是通过遇到的第一个空行在响应中拆分标题和正文,除了在这种情况下,空行在 100 Continue 之后,因此其他所有内容被插入体内——这不再是有效的 json :-)

所以我的问题是:处理此问题的常用方法是什么?我有 3 个选项:

  1. 指定 curl 不应期待 100-continue? (如何?)
  2. 指定 curl 应该只发回最后一个响应的 header ? (如何?)
  3. 手动检查 100 Continue header 并忽略它们及其后面的空行? (在那种情况下,是否还有其他类似的事情可能发生,我应该手动检查?)

除非我遗漏了一些明显的东西,否则我相信人们已经偶然发现并解决了很多次!

最佳答案

我会选择#1。您可以通过添加以下内容强制 curl 发送空的“Expect” header :

curl_setopt($ch, CURLOPT_HTTPHEADER,array("Expect:"));

到你的代码

如果您想手动检查,您应该定义自己的 header 回调,也可以编写回调(在 curl_setopt doc 中查找 CURLOPT_HEADERFUNCTION 和 CURLOPT_WRITEFUNCTION),只需忽略所有“HTTP/1.1 100 Continue” header 即可。

关于PHP curl_exec 返回以空格分隔的 HTTP/1.1 100 Continue 和 HTTP/1.1 200 OK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11359276/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com