したがって、xml要求を受信するアプリケーションを構築する必要があり、それに基づいて応答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;
}
私の質問は-受信側のコードは何ですか?着信リクエストをどのようにキャッチしますか?ありがとう。
一般的なアイデアは、POST=値を読み取り、XMLとして解析し、ビジネス上の決定を行い、決定したAPIに従ってXML応答を構築し、それを書き込むことです。レスポンスに。
POST値を読み取ります:
$dataPOST = trim(file_get_contents('php://input'));
XMLとして解析:
$xmlData = simplexml_load_string($dataPOST);
次に、XML文字列(または必要に応じてドキュメントツリー)を作成し、応答に出力します。 print()またはecho()で問題ありません。
受信側で行う必要があるのは、「通常の」PHPスクリプトを作成することだけです。エンドポイントと要求しているサービス間のプロトコルに応じて、正しい場所からデータを取得する必要があります。 $ _ GETまたは$ _ POST配列になる可能性が最も高いです。
rawPOSTデータが$ _POSTで届かない場合は、この記事を読んでください)