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
我正在尝试整个互联网上的所有解决方案,但我无法得到它。
我正在尝试使用 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