0

Web サービスから xml ファイルを取得する PHP スクリプトを作成しようとしています。C# で同等の作業を行いましたが、全体的な目標は、最終的なスクリプトを Wordpress に統合することです。

秘訣は、認証ヘッダー トークンを追加する必要があることです。

Fiddler では、リクエストは次のようになります。

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

ユーザーエージェント: Fiddler

承認: 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で実装する最良の方法は何ですか?

ありがとう!

4

1 に答える 1

2

ヘッダーを渡す機能が必要なため、 cURLを使用するのが最善の方法です。file_get_contentsそれは許しません。cURL で実行できるすべての機能については、必ずcurl_setopt 関数を参照してください。

オプションが必要になると思いますCURLOPT_HTTPHEADER。これは、設定する HTTP ヘッダー フィールドの配列を の形式で受け取りますarray('Content-type: text/plain', 'Content-length: 100')

CURLOPT_USERAGENTFiddler のようにユーザー エージェント文字列を渡すことを選択した場合は、ユーザー エージェント文字列を渡すことができます (Fiddler 以外の名前を付けます)。

実行するcurl_execと、サイトから XML が返されます。そこから、XML ParserSimpleXML、または必要なものを使用できます。

于 2012-08-14T18:26:37.957 に答える