2012-02-21 6 views
11

xmlリクエストを受け取るアプリケーションをビルドする必要があり、それに基づいてレスポンスxmlを返さなければなりません。私は要求を送信し、応答を受け取る方法を知っていますが、私はそれを他の方法でやったことはありません。私はそうのような要求を送信します:xmlリクエストを受信して​​PHPで応答XMLを送信するにはどうすればいいですか?

private function sendRequest($requestXML) 
{ 
    $server = 'http://www.something.com/myapp'; 
    $headers = array(
    "Content-type: text/xml" 
    ,"Content-length: ".strlen($requestXML) 
    ,"Connection: close" 
    ); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $server); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 100); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    $data = curl_exec($ch); 



    if(curl_errno($ch)){ 
     print curl_error($ch); 
     echo " something went wrong..... try later"; 
    }else{ 
     curl_close($ch); 
    } 

    return $data; 

} 

私の質問は - 何が受信側のコードでしょうか?どのように着信要求をキャッチしますか?おかげさまで

答えて

29

一般的な考え方は、POST値を読み込み、XMLとして解析し、ビジネス上の決定を下し、決めたAPIに従ってXML応答を構築し、応答に書き込むことです。 POST値の

読む:XMLとして

$dataPOST = trim(file_get_contents('php://input')); 

解析:次に

$xmlData = simplexml_load_string($dataPOST); 

、あなたは(あなたが希望する場合、またはドキュメントツリー)XML文字列を構築し、それを印刷しますレスポンスに出す。 print()またはecho()はうまくいくでしょう。

+0

をピークを取ります。 – Matth3w

0

受信側で行うべきことは、通常のPHPスクリプトを作成することだけです。エンドポイントと要求サービスの間のプロトコルに応じて、$ _GETまたは$ _POST配列になる可能性が最も高い正しい場所からデータを取得する必要があります。それは$ _POSTに貫通して来ていない場合

あなたは POSTデータを読み込む必要があり、一流のソリューションこの記事で

http://www.codediesel.com/php/reading-raw-post-data-in-php/

関連する問題