2013-02-19 78 views
0

我一直在尋找正確的答案,如何解決這個常見錯誤的PHP代碼:failed to open stream: HTTP request failed!我真的認爲解決方案在於重寫代碼繞過代碼中的http頭文件爲User-Agent。我需要訪問的文件與此代碼位於同一臺服務器上。我需要我怎麼能改寫這個腳本的功能部件的幫助:從file_get_content手冊頁重寫php代碼,以避免無法打開流:HTTP請求失敗

function runapp($dir,$latdeg,$latmin,$latsec,$longdeg,$longmin,$longsec) 
{ 
    global $_english; 

    $query= ($_english ? 'http://esnig.org/cgi-bin/ntv2_geo2_e.cgi' : 'http://esnig.org/cgi-bin/ntv2_geo2_f.cgi'). 
     '?' . PAR_DIR  .'=' . $dir . 
     '&' . PAR_LATDEG .'=' . $latdeg . 
     '&' . PAR_LATMIN .'=' . $latmin . 
     '&' . PAR_LATSEC .'=' . $latsec . 
     '&' . PAR_LONGDEG .'=' . $longdeg . 
     '&' . PAR_LONGMIN .'=' . $longmin . 
     '&' . PAR_LONGSEC .'=' . $longsec; 


    $response=file($query); 

    foreach ($response as $value) 
    { 
     echo $value; 
    } 
} 
?> 

回答

0

注意:如果你打開一個URI有特殊字符,如空格, 您需要使用urlencode()對URI進行編碼。

因此,嘗試urlencode之前查詢參數。 此外,我建議使用curl從互聯網上獲取文檔url

0

嗯,當我對這些URL做出請求時,我得到了一個403 Forbidden響應。這可能嗎?

如果沒有,看起來你不測試runapp()函數參數爲非空值。他們可能是空的字符串。如果您執行某些值爲空的請求,會發生什麼情況?你會得到格式不正確的查詢參數。

簡而言之:你應該檢查你的參數的長度或者!空或者一些這樣並且只將它們追加到查詢字符串(如果它們被設置)。

相關問題