2011-07-01 62 views
0

我有一個奇怪的問題。 當我去瀏覽器中的URL時,我得到了一個很好格式化的XML結構作爲回報。 抓取遠程XML文件返回奇怪的字符串

<root> 
<contents/> 
</root> 

(假數據雖然)

但是當我使用捲曲的file_get_contents(甚至在Linux中的wget)我得到某種序列化的數據至極的是不能用於me.``

{「root:{」contents etc.

任何人都知道爲什麼以及如何解決它?

+0

你可以發佈你使用的代碼嗎?您是否可以提供網址 – tradyblix

+0

? – ajreal

回答

1

這可能是Content Negotiation的問題。

爲了總結這是如何工作的,當用戶代理向服務器提交請求時,用戶代理通過服務器向服務器通知它瞭解它理解的媒體類型。更確切地說,用戶代理提供了一個Accept HTTP頭,其中列出了可接受的媒體類型和相關的質量因素。服務器能夠提供最適合用戶代理需求的資源版本。

您的瀏覽器通常會發送一個Accept Header,它要求text/html或類似的東西。服務器的默認似乎是服務於json。確保在cURL請求中發送適當的Accept Header以告訴服務器應該如何迴應您的請求。

在旁註中,如果您打算之後處理XML,則可能根本不需要cURL。所有基於libxml的XML擴展都可以從遠程位置加載。他們可以用custom HTTP stream context這樣做。

參考:

1

服務器可能相應地檢測所述用戶代理和格式的結果。在wget中,添加'--user-agent = Mozilla/5.0(Windows NT 6.1; Win64; x64; rv:5.0)Gecko/20110619 Firefox/5.0'選項,使服務器認爲你來自瀏覽器。另一種方法是通過Accept Header告訴服務器您期望的內容類型。

相關問題