我正在尝试整个互联网上的所有解决方案,但我无法得到它。
我正在尝试使用 php curl 连接到发送 json 数据的外部 API,但我无法设置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);
响应:
卷曲处于活动状态
array(26( { ["url"]=> string(66( "https://example.com:port/api/example" ["content_type"]=> NULL ["http_code"]=> int(0( ["header_size"]=> int(0( ["request_size"]=> int(0( ["filetime"]=> int(-1( ["ssl_verify_result"]=> int(0( ["redirect_count"]=> int(0( ["total_time"]=> float(0.0.467581( ["namelookup_time"]=> 浮点数(0.004158( ["connect_time"]=> 浮点数(0( ["pretransfer_time"]=> 浮点数(0( ["size_upload"]=> 浮点数(0( ["size_download"]=> 浮点数(0( [">speed_download"]=> 浮点数(0( ["speed_upload"]=> float(0
( ["download_content_length"]=> float(-1( ["upload_content_length"]=> float(-1( ["starttransfer_time"]=> float(0( ["redirect_time"]=> float(0( ["redirect_url"]=> string(0( " ["primary_ip"]=> string(0( " ["certinfo"]=> array(0( { } ["primary_port"]=> int(0( ["local_ip"]=> string(0( " ["local_port"]=> int(0( }7
无法连接到 https://example.com 端口 xxx:连接被拒绝
响应:布尔值(假(
。
如果我通过SoapUI尝试:
HTTP/1.1 200 变化:产地 变化:访问控制请求方法 变化:访问控制请求标头 变化:产地 变化:访问控制请求方法 变化:访问控制请求标头 X-内容类型选项:嗅探 X-XSS 保护: 1;模式=块 缓存控制:无缓存、无存储、最大年龄=0、必须重新验证 杂注:无缓存 过期: 0 严格传输安全:最大年龄=31536000 ;包括子域 X 帧选项:拒绝 内容类型:文本/纯文本;字符集=UTF-8 内容长度:42 日期:2020 年 6 月 11 日星期四 09:29:46 GMT 保持活动状态:超时 = 60 连接:保持活动状态
正确响应
但我需要在 php 上做到这一点。有什么帮助吗?
这是关于https的,现在我得到:
Response: string(34) "xxxxxxxxxxxxxxxxx"
谢谢@ADyson