gpt4 book ai didi

PHP curl 响应因网络而异(编码问题?)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:35:43 25 4
gpt4 key购买 nike

我有一个 PHP/JS 页面,它使 JQuery ajax 调用另一个 PHP 脚本,该脚本调用 REST 服务并将响应发送回 PHP/JS 页面。我这样做是因为我找不到从 JS(不同域)调用服务的非 JSONP 方式。

无论如何,在家里它工作得很好。我在办公室部署并首先遇到这样的 apache 错误:

Problem (2) in the Chunked-Encoded data

我能够通过添加来解决这个问题: CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0到我的 curl 选项。

但是,现在通过的数据有一个菱形问号,开头和结尾不属于的字符等。据我发现,这可能是编码问题,但我努力修复它不起作用。

再说一次,在家也能完美工作……而不是在工作中。

非常感谢任何帮助

---------------------------- 编辑如下---------------- --------------

编码问题首先出现在服务返回的响应中。这是发送/接收的代码:

            $request_headers    = array();
$request_headers[] = 'Content-Type: application/json';
$request_headers[] = 'Authorization: Bearer ' . $token;

$options = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_VERBOSE => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => '',
CURLOPT_AUTOREFERER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_MAXREDIRS => 10,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_HTTPHEADER => $request_headers,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0
);

curl_setopt_array( $ch, $options );
$response = curl_exec($ch);

我将 $response 记录到磁盘并在 JSON 之前看到一个 ó,在它之后看到一个 Ê。

---------------------------- 第二次编辑如下---------------- --------------

我显然需要更改为:$request_headers[] = 'application/x-www-form-urlencoded';

感谢您的提示。

最佳答案

我从其他一些堆栈问题中找到它 here ,它也解决了我的问题,看起来像是 curl 版本问题。

将此选项添加到您的 curl 处理程序中:

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

关于PHP curl 响应因网络而异(编码问题?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18766946/

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