2012-02-25 5 views
0

でXMLを処理するXMLをリモートサーバーから受信するPHPページを作成しようとしています(サーバーに送信されるメッセージなどのサードパーティイベントによってトリガーされます)。応答を処理するのではなく、むしろ私のページへの迷惑ではない(しかし歓迎されない)呼び出しを待っています。http:

私はローカルファイルにXMLを使用している場合は、私はとうまくXMLを処理することができます

$url = 'xml-file.xml'; 
$xml = simplexml_load_file($url); 

ところでファイルのXMLは次のようになります。

<?xml version="1.0" encoding="UTF-8"?> 
<ALERTSERVICE> 
    <PHONENUMBER>1234567890</PHONENUMBER> 
    <KEYWORD>Traffic</KEYWORD> 
    <CONTENTS>Route 42</CONTENTS> 
</ ALERTSERVICE > 

誰もがして提供できます

http://www.some_server.com/process_test/process.php?xml=<?xml version="1.0" encoding="UTF-8"?><ALERTSERVICE><PHONENUMBER>1234567890</PHONENUMBER><KEYWORD>traffic</KEYWORD><CONTENTS>Route 42</CONTENTS></ALERTSERVICE> 

私はこのように、同じXMLがHTTPに含まれる場合のコード置換私は完全に何かを見逃していますが、デッドラインに照らして、無駄なく検索して実験しています。あなたの助けを前もってありがとう!

+1

本当にGET変数にXMLを受け取りますか? – Repox

答えて

1

シンプルな、あなたの場合には、$_GETスーパーグローバルで$_GET['xml']をGETパラメータにアクセスすることができます:URLを通じてXMLを渡す

$xml = simplexml_load_string($_GET['xml']); 

はいえ非常に素晴らしいではありません。例えばあなたのURLが無効である、あなたのサーバがそれについて文句を言うかもしれません:あなたはそれ作ることができ

http://www.some_server.com/process_test/process.php?xml=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%3CALERTSERVICE%3E%3CPHONENUMBER%3E1234567890%3C%2FPHONENUMBER%3E%3CKEYWORD%3Etraffic%3C%2FKEYWORD%3E%3CCONTENTS%3ERoute+42%3C%2FCONTENTS%3E%3C%2FALERTSERVICE%3E%27 

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<HTML><HEAD> 
<TITLE>400 Bad Request</TITLE> 
</HEAD><BODY> 
<H1>Bad Request</H1> 
Your browser sent a request that this server could not understand.<P> 
The request line contained invalid characters following the protocol string.<P> 
<P> 
</BODY></HTML> 

あなたが好きな、URLで使用する前に適切にurlencode() XML文字列を必要としますPOSTリクエストと同様に、$_POSTでPOSTバールにアクセスすると、$_GETと同様に動作します。

1

非常に長いURL(ログファイルの痛み)がなく、URLの大きなGET部分をエスケープする必要がないように、XMLをPOSTする方が良いでしょう。 POSTのコードは次のとおりです。

$request = new DOMDocument(); 
$request->loadXML($HTTP_RAW_POST_DATA, LIBXML_NOBLANKS); 
関連する問題