gpt4 book ai didi

未设置 PHP cURL Content-Type

转载 作者:IT王子 更新时间:2023-10-29 01:18:32 26 4
gpt4 key购买 nike

我想连接一个简单的网络服务。为了发布一些 XML,这将在 Web 服务端正确进行,我需要准备一个正确的请求。我正在为此使用 cURL:

try {
$ch = curl_init();

if (FALSE === $ch)
throw new Exception('failed to initialize');

curl_setopt($ch, CURLOPT_URL,"192.168.1.37");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/xml',
'Connection: Keep-Alive'
));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_PROXY, '');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER,array("Expect: "));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS,$xml);

$request= curl_getinfo($ch);
var_dump($request);

$content = curl_exec($ch);

if (false === $content) {
throw new Exception(curl_error($ch), curl_errno($ch));
}
} catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),E_USER_ERROR);
}

一切都应该没问题。首先,我显示来自 curl_getinfo($ch); 的请求正文,然后我显示来自 $content 变量的响应。

发送到服务器的请求的唯一限制是Content-Type header - 它必须是application/xml 否则服务器将响应错误(这不是我的想法,我对此无能为力)

这里是输出请求:

array(21) { ["url"]=> string(68) "192.168.1.37"["content_type"]=> NULL ["http_code"]=> int(0) ["header_size"]=> int(0) ["request_size"]=> int(0) ["filetime"]=> int(0) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0 ) ["total_time"]=> float(0) ["namelookup_time"]=> float(0) ["connect_time"]=> float(0) ["pretransfer_time"]=> float(0) ["size_upload"] => float (0)[“size_download”]=> float (0)[“speed_download”]=> float (0)[“speed_upload”]=> float (0)[“download_content_length”]=> float (-1 ) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } }

响应是HTTP 400 Bad Request

我可以从中看到的是 ["content_type"]=> NULL 但我在我的 PHP 代码中设置了这个变量...

谁能告诉我我错过了什么?

最佳答案

您设置了两次 HTTP_HEADER:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/xml',
'Connection: Keep-Alive'
));

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

我想这就是问题所在。第二次设置时,删除第一个设置。

关于未设置 PHP cURL Content-Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19636367/

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