我正在尝试编写一个从Web服务检索xml文件的PHP脚本。我已经在C#中获得了等效的工作,但我的总体目标是将我的最终脚本集成到Wordpress中。
诀窍是我需要添加一个身份验证标头令牌。
在 Fiddler 中,请求如下所示:
获取 https://service.domain.com/sample/stuff/555/state/PA/page/1/size/10 HTTP/1.1
用户代理:提琴手
授权:123456789-123456789abcdef
主持人:service.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 中实现这一点的最佳方法是什么?
谢谢!
最好的方法是使用 cURL,因为您希望能够传递标头。 file_get_contents
不会允许的。 确保你查看了curl_setopt函数,了解你可以用cURL做的所有事情。
我想你会想要选项 CURLOPT_HTTPHEADER
. 它需要设置一个 HTTP 标头字段数组,格式为 array('Content-type: text/plain', 'Content-length: 100')
.
CURLOPT_USERAGENT
将允许您传递用户代理字符串,如果您选择像 Fiddler 那样这样做(将其命名为 Fiddler 以外的名称)。
当您运行curl_exec
时,它应该从站点返回 XML。 从那里你可以使用XML解析器,SimpleXML或任何你想要的东西。