PHP cURL Content-Type 未设置

PHP cURL Content-Type not set

我正在尝试整个互联网上的所有解决方案,但我无法得到它。

我正在尝试使用 php curl 连接到外部 API 发送 json 数据,但我无法设置 content_type.

$url = "https://example.com:xxxx/api/example";

$data = array(
    'example' => '1',
    'example2' => '2'
);
$jsonData = json_encode($data);

$ch = curl_init($url);

if(extension_loaded('curl') == true){
    echo('Curl is active<br/>');
} else {
    echo('Curl is NOT active<br/>');
}

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type:application/json',
    'Connection: Keep-Alive'
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 300); //timeout in seconds
$result = curl_exec($ch);


echo('<hr/>');
var_dump(curl_getinfo($ch));
echo('<br/>');
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';
echo('<hr/>');


curl_close($ch);

echo('<br/>Response: ');
var_dump($result);

回复:

Curl 处于活动状态

array(26) { ["url"]=> string(66) "https://example.com:port/api/example" ["content_type"]=> NULL ["http_code"]=> int (0) ["header_size"]=> 整数(0) ["request_size"]=> 整数(0) ["filetime"]=> 整数(-1) ["ssl_verify_result"] => 整数 (0) ["redirect_count"]=> 整数 (0) ["total_time"]=> 浮点数 (0.467581) ["namelookup_time"]=> 浮点数 (0.004158) ["connect_time"]=>浮动(0)["pretransfer_time"]=>浮动(0)["size_upload"]=>浮动(0)["size_download"]=>浮动(0)["speed_download"]=>浮动(0)["speed_upload"]=>浮动(0)["download_content_length"]=>浮动(-1)["upload_content_length"]=>浮动(-1 ) ["starttransfer_time"]=> 浮动(0) ["redirect_time"]=> 浮动(0) ["redirect_url"]=> 字符串(0) "" ["primary_ip"]= >字符串(0)“”["certinfo"]=>数组(0){}["primary_port"]=>整数(0)["local_ip"]=>字符串(0)“” ["local_port"]=> 整数(0)}

7

无法连接到 https://example.com 端口 xxx:连接被拒绝

响应:bool(false)

...

如果我通过 SoapUi 尝试:

HTTP/1.1 200 变化:起源 变化:Access-Control-Request-Method 变化:Access-Control-Request-Headers 变化:起源 变化:Access-Control-Request-Method 变化:Access-Control-Request-Headers X-Content-Type-Options: 鼻嗅 X-XSS-Protection: 1;模式=块 Cache-Control: no-cache, no-store, max-age=0, must-revalidate 编译指示:no-cache 过期:0 Strict-Transport-Security: max-age=31536000 ;包括子域名 X-Frame-Options:拒绝 Content-Type: text/plain;字符集=UTF-8 Content-Length: 42 日期:2020 年 6 月 11 日,星期四 09:29:46 GMT Keep-Alive:超时=60 连接:keep-alive

正确回答

但我需要在 php 上完成。有帮助吗?

关于https,现在我得到:

Response: string(34) "xxxxxxxxxxxxxxxxx"

感谢@ADyson