このコードを使用して XML のコンテンツを取得しています。
$xml = simplexml_load_file("X.xml");
echo $xml->CountryList->Country[1];
X.xml は次のとおりです。
<PickUpCityListRQ>
<CountryList>
<Country>Albania</Country>
<Country>Andorra</Country>
</CountryList>
</PickUpCityListRQ>
すべて正常に動作し、Andorra が返されますが、次のような特殊文字を含む URL を使用しようとすると、次のようになります。
http://somelink/ServiceRequest.do?xml=<PickUpCityListRQ><Credentials username='USERNAME' password='PASSWORD' remoteIp='IP'/><Country>UK</Country></PickUpCityListRQ>
このリンクは単なる例であるため機能しませんが、実際のリンクは X.xml と同じコンテンツを返すと信じています。その理由がリンクの特殊文字であることは知っていますが、うまくいきません。私はこのようなことを試しました:
$username = "USERNAME";
$password = "PASSWORD";
$accessurl = htmlspecialchars("Credentials username='$username' password='$password' remoteIp='123.123.123.123'/");
$required = htmlspecialchars("<PickUpCityListRQ><$accessurl><Country>UK</Country></PickUpCityListRQ>");
$url = 'somelink/service/ServiceRequest.do?xml='.$required;
echo $url;
必要なリンクを (echo で) 返します。手動で (ブラウザーで) 使用すると、必要なコンテンツにアクセスできます。しかし、次のコードを使用して XML コンテンツを取得しようとすると、次のようになります。
$xml = simplexml_load_file($url);
echo $xml->CountryList->Country[1];
私は働きません。何か案は?前もって感謝します。