2012-08-14 57 views
0

我正在嘗試編寫一個從web服務中檢索xml文件的PHP腳本。我已經獲得了C#的一個等效工作,但我的總體目標是將我的最終腳本集成到Wordpress中。使用PHP從Web服務中檢索xml

訣竅是我需要添加一個身份驗證頭令牌。

在提琴手,請求看起來是這樣的:

GET https://service.domain.com/sample/stuff/555/state/PA/page/1/size/10 HTTP/1.1

的User-Agent:提琴手

授權:123456789-123456789abcdef

主持人:服務.mywebgrocer.com

的C#代碼,我(工作)的樣子:

HttpWebRequest request = 
    (HttpWebRequest) 
    WebRequest.Create("https://service.domain.com/sample/stuff/555/state/PA/page/1/size/10"); 
    request.Method = "GET"; 
    request.Headers.Add("Authorization", "123456789-123456789abcdef"); 
    request.ContentType = "application/xml; charset=utf-8"; 

    HttpWebResponse httpWebResponse = (HttpWebResponse) request.GetResponse(); 


    Stream stream = httpWebResponse.GetResponseStream(); 
    StreamReader streamRead = new StreamReader(stream); 
    String streamString = streamRead.ReadToEnd(); 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(streamString); 

    Console.WriteLine("Name of xml document: {0}", doc.Name); 
    Console.WriteLine("outer xml: {0}\n", doc.OuterXml); 

什麼是PHP來實現這一目標的最佳方式是什麼?

謝謝!

回答

2

最好的方法是使用cURL,因爲你希望能夠傳遞標題。 file_get_contents不會允許。確保你看看curl_setopt function所有你可以用cURL做的事情。我想你會想要選項CURLOPT_HTTPHEADER。它以array('Content-type: text/plain', 'Content-length: 100')的格式接收一組HTTP頭字段進行設置。

CURLOPT_USERAGENT將允許您傳遞用戶代理字符串,如果您選擇像Fiddler一樣執行操作(將其命名爲Fiddler以外的其他名稱)。

當您運行curl_exec時,它應該從站點返回XML。從那裏你可以使用XML Parser,SimpleXML,或任何你想要的。

+0

這確實看起來像我想要的。謝謝!但是,我對PHP很陌生,並不十分理解數組格式的含義。它是說這個關鍵字需要是'text/plain',並且該值不能超過100,或者這是一個非鍵控數組,每個值都需要是'text/plain /並且小於100? – rwhite 2012-08-14 19:12:43

+0

這只是一個例子。你想發送的每個頭都需要是它自己的數組元素,比如'array('Authorization:123456789-123456789abcdef')'。如果您想將其添加到該數組中,則可以添加其他內容。 – tubaguy50035 2012-08-14 19:43:29