• 締切済み

PHPでのRAWデータの受け取り方

こんにちわ。 PHPについて質問させて下さい。 PEARのHTTP_RequestのaddRawPostData()でXML文書をmessage bodyに突っ込んで POSTメソッドで投げて、受ける側ではPOSTで取得しているのですが、 $_POSTでmessage bodyを受け取った場合、 var_dump($_POST); 出力: array(1) { ["<entry_xmlns=\"ttp://purl_org/atom/ns#\">postのテスト</entry>"]=> string(0) "" } などとなり、 message bodyの内容が無条件に$_POSTのキーになり、 「空白」であるところが「_(アンダーバー)」に変換されてしまいます。 APIを通常のPOSTやGETデータでつついてレスポンスのXMLを受け取ってパース・・・というのはよくやっているのですが、 XMLで受け取るAPIをPHPで作った事が無かったのでどうにも知識不足です。 そもそもこのやり方でいいんだろうか。 どなたかご教授ください。

みんなの回答

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

>ちなみにですがレスポンスのステータスコードを操作もしたいのですが >なにかいい方法はないでしょうか。 header関数で指定すればOKです。 > header("HTTP/1.1 201 Created"); 詳しくは参考URL(っていうかマニュアルですが)を見てください。

参考URL:
http://www.php.net/manual/ja/function.header.php
youkee
質問者

お礼

ありがとうございました! phpのマニュアル読んでたら普通に書いてありました。 というか、とくに何も考えず質問してしまってすいませんでしたm(_ _)m 逆に丁寧に答えて頂いてどうもです!

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

php://inputから生のPOSTデータが取得出来ます。 file_get_contentsやfopenなどを使って生データを読み込んだら、後はDOM関係のクラスやAPIを使用してDOMに落としてあげると良いと思います。

youkee
質問者

お礼

おっしゃるとおりで・・・ カンタンにできました。 orz peclまで入れてみた自分のアホさ加減にびっくりです。 ちなみにですがレスポンスのステータスコードを操作もしたいのですが なにかいい方法はないでしょうか。 201 created として返したかったりするのですが・・・ よろしくお願いします。

関連するQ&A