即使這是老問題了,可能是這樣的回答可以幫助別人當看到同樣的問題。
爲了解決這個問題,請確保:
allow_url_fopen
爲ON,檢查php.ini
文件。
url
是一個有效的網址。要跳過一些關於傳遞變量的問題,您可以使用http_build_query
- 返回的json有效。您可以檢查退貨是否有效jsonlint.com
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);
Hopely有用的,謝謝。
'var_dump''$ result'變量。也許你甚至沒有從網址獲取內容。 – rinukkusu
'「url」'它是真實的還是你傳遞一個有效的文件路徑? –
url不是真實的url它僅僅作爲一個例子被粘貼 – Wojtokuba