我正在尝试使用json数据从php生成的文件中获取文件内容。
Json已经被jsonlint.com网站检查过了。这是有效的。
$result = file_get_contents("url");
var_dump(json_decode($result,true));
Nginx不会显示任何错误。
为什么它不起作用? Json生成器在外部服务器上。 当我将其粘贴到http://php.fnlist.com/php/json_decode网站上时,它已正确转换。
答案 0 :(得分:1)
您可以从编码/解码...
获取最后一条错误消息答案 1 :(得分:0)
尽管这是一个古老的问题,但在看到同样的问题时,这个答案可能会对某人有所帮助。
要处理此问题,请确保:
allow_url_fopen
已开启,请检入php.ini
文件。url
是有效的网址。要跳过关于传递变量的一些问题,您可以使用http_build_query
stream_context
已设置好,因此file_get_contents
知道如何处理请求。
即使我们通过HTTPS提供数据,我们也需要使用http context
。我们将method
设置为PUT
,将Content-type
设置为application/json
,将Accept
设置为application/json
,将Connection
设置为close
,和Content-length
到我们的JSON字符串的长度。我们通过HTTP1.1提供这些数据,因此我们将其设置为1.1
。我们在请求正文中发送JSON,因此我们在内容中设置它。由于我们使用的是HTTPS,因此我们需要配置ssl
设置。
$context = stream_context_create([
'http' => [
'method' => 'PUT',
'header' => "Content-type: application/json\r\n" .
"Accept: application/json\r\n" .
"Connection: close\r\n" .
"Content-length: " . strlen($json_data) . "\r\n",
'protocol_version' => 1.1,
'content' => $json_data
],
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false
]
]);
最后通过调用file_get_contents
来放置数据:
$getData = file_get_contents($url, false, $context);
$results = json_decode($getData, TRUE);
希望有用,谢谢。