首頁 >後端開發 >php教程 >file_get_contents 取得不了網頁內容

file_get_contents 取得不了網頁內容

WBOY
WBOY原創
2016-07-29 09:04:271243瀏覽

伺服器在做驗簽的過程中,常常需要向頻道伺服器取得某個使用者的資訊。一般有兩種方法,curl和file_get_contents。

一般情況下,像這樣用,不會有問題。

<span> 1</span><span>public</span><span>function</span> OauthPostExecuteNew(<span>$sign</span>,<span>$requestString</span>,<span>$request_serverUrl</span><span>){
</span><span> 2</span><span>$opt</span> = <span>array</span>("http"=><span>array</span><span>(
</span><span> 3</span>         "method"=>"GET",
<span> 4</span>         "header"=><span>array</span>("param:".<span>$requestString</span>,"oauthsignature:".<span>$sign</span>),
<span> 5</span>         "request_fulluri"=><span>true</span><span> 6</span><span>        )
</span><span> 7</span><span>    );
</span><span> 8</span><span> 9</span><span>$context</span> = <span>stream_context_create</span>(<span>$opt</span><span>);
</span><span>10</span><span>$res</span>=<span>file_get_contents</span>(<span>$request_serverUrl</span>, <span>false</span>, <span>$context</span><span>);
</span><span>11</span><span>12</span><span>return</span><span>$res</span><span>;
</span><span>13</span> }

但是由於我司伺服器連外網時透過代理,所以在使用stream_context_create時需要帶上proxy參數,才能存取到頻道的伺服器。

所以在上面代碼 $opt 數組中帶上"proxy"=>$proxy字段。加上之後發現file_get_contents仍然無法正常驗簽。

百思不解,遂到官網上來查查file_get_contents,發現並沒有關於proxy的解釋,然後搜索stream_context_create,官方解釋有這句話

params

$value

 格式的關聯數組。 請參考 context parameters 裡的標準資源流參數清單。

那麼 我們進入context_parameters 查看參數配置。因為我們使用的是HTTP方式,所以查看HTTP context

查看與proxy相關的

proxy

 stringURI 指定的代理伺服器的位址。 (e.g. 

tcp://proxy.example.com:5100

).

request_fulluri

 boolean當設定為 Uh

TRUEUE

(i.e. GET http://www.example.com/path/to/file.html HTTP/1.0)。 雖然這是一個非標準的請求格式,但某些代理伺服器需要它。 預設值是 

FALSE

.

發現只配置了proxy,而沒有配置request_fulluri,遂加上request_fulluri=true,驗證通過。

注意:使用proxy參數時需要把http 改為tcp 具體什麼原因,不知道。等我查到了再到這裡更新。

以上就介紹了file_get_contents 取得不了網頁內容,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn