我正在尝试编写一个简单的PHP插件,它将从服务器获取数据并为用户显示它们。
我已设法使用以下javascript代码访问服务器。但是,当我尝试使用PHP(这一直是我的目标)时,我只会出现超时或错误。
请指出我的PHP代码中与javascript相关的区别/错误?
工作JS示例:
function myFunction() {
$.ajax({
url: 'URL',
headers: {
'Authorization':'KEY',
'PortalAuthorization':'KEY',
'Content-Type':'application/json'
},
method: 'POST',
dataType: 'json',
data: JSON.stringify({"ServerName":"MAIN","List":null}),
error: function(xhr, error){
console.debug(xhr);
console.debug(error);
},
success: function(data) {
console.log(data);
}
});
}
尝试PHP等价物:
<?php
function prepare_headers($headers) {
return
implode('', array_map(function($key, $value) {
return "$key: $value\r\n";
}, array_keys($headers), array_values($headers))
);
}
//json parsing
$son->ServerName = "MAIN";
$son->List = "null";
$JS = json_encode($son);
$len = strlen($JS);
$headers = array('Authorization'=>"KEY",
'PortalAuthorization'=>"KEY",
'Content-Type' => "application/json", 'Content-Length' => $len
);
$oo = prepare_headers($headers);
$url = urldecode('URL');
$context = stream_context_create(array( 'http' => array(
'method'=>"POST",
'header'=> $oo,
'Content' => $JS
)));
$result = file_get_contents($url,false,$context);
?>
这会导致警告:无法打开流:HTTP请求失败!以及随后的致命错误:超过由行$result = file_get_contents($url,false,$context);
我还试图做'header'=> $headers
,但这导致了一个不同的错误:无法打开流:HTTP请求失败!再次$result = file_get_contents($url,false,$context);
需要HTTP / 1.1 411长度
我不熟悉PHP,所以任何帮助都会受到赞赏。