2014-09-18 91 views
-1

我開始通過使用wunderground API來學習PHP。PHP中的Web服務請求

我有他們的下面的代碼示例,在使用xanampp/apache進行測試時在本地工作,但是當我將它放在Internet上的實際活動Web服務器上時,似乎沒有對Web服務進行調用。

代碼:

<?php 
    $json_string = file_get_contents("http://api.wunderground.com/api/key/geolookup/conditions/q/IA/Cedar_Rapids.json"); 
    $parsed_json = json_decode($json_string); 
    $location = $parsed_json->{'location'}->{'city'}; 
    $temp_f = $parsed_json->{'current_observation'}->{'temp_f'}; 
    echo "Current temperature in ${location} is: ${temp_f}\n"; 


?> 

結果本地我的機器上使用XAMPP:在Web服務器

Current temperature in Cedar Rapids is: 77.4 

結果我付主辦網頁:

Current temperature in is: 

錯誤報告:

Warning: file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /hermes/bosnaweb01b/b2414/ipg.domainID/testt.php on line 5 Warning: file_get_contents(http://api.wunderground.com/api/key/geolookup/conditions/q/IA/Cedar_Rapids.json): failed to open stream: no suitable wrapper could be found in /hermes/bosnaweb01b/b2414/ipg.domainID/testt.php on line 5 Notice: Trying to get property of non-object in /hermes/bosnaweb01b/b2414/ipg.domainID/testt.php on line 7 Notice: Trying to get property of non-object in /hermes/bosnaweb01b/b2414/ipg.domainID/testt.php on line 7 Notice: Trying to get property of non-object in /hermes/bosnaweb01b/b2414/ipg.domainID/testt.php on line 8 Notice: Trying to get property of non-object in /hermes/bosnaweb01b/b2414/ipg.domainID/testt.php on line 8 Current temperatdure in is: 
+0

什麼:'echo「。」$ location。「中的當前溫度爲:」。 $ temp_f。「\ n」;'說? – Pogrindis 2014-09-18 23:30:31

+1

您是否啓用了完整的錯誤報告?最有可能的原因是你的json無法被檢索(因爲'allow_url_fopen'被禁用,或者可能還有其他問題。 – Wrikken 2014-09-18 23:32:44

+0

@Wrikken不確定如何啓用錯誤報告。這是我第一次使用PHP。有一些網絡服務的經驗,但不是與PHP – user2941841 2014-09-18 23:35:30

回答

0

答:Web服務器經常不允許file_get_contents。使用捲曲:

$curl = curl_init(); 
// Set some options - we are passing in a useragent too here 
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_URL => "http://api.wunderground.com/api/key/geolookup/conditions/q/IA/Cedar_Rapids.json", 
    CURLOPT_USERAGENT => 'Codular Sample cURL Request' 
)); 
// Send the request & save response to $resp 
$resp = curl_exec($curl); 
// Close request to clear up some resources 
curl_close($curl); 

$json_string = $resp; 
$parsed_json = json_decode($json_string); 
    $location = $parsed_json->{'location'}->{'city'}; 
    $temp_f = $parsed_json->{'current_observation'}->{'temp_f'}; 
    echo "Current temperatdure in ${location} is: ${temp_f}\n"; 
+0

這是一個替代方案,而不是問題的「答案」。 Web服務器經常不允許cURL的可能性相同。 – 2014-09-19 00:11:26

+0

@scrowler但如果這是唯一做我想在我的環境中,並沒有辦法做到這一點,使用file_get_contents沒有服務器更改爲php.ini這是否意味着這是一個問題,凸輪永遠不會被回答? – user2941841 2014-09-19 11:08:20