特定のアイテムのキャッシュをフラッシュするCDNAPIにリクエストを送信しています。応答を正しく解析しようとしていますが、応答が(どのように見えるかから)誤って返されるだけでなく、そのような大量の情報を解析するのに苦労しています。私の目的は、エラーコードとともに、応答から失敗したフラッシュのリストを取得することです。
これは、APIがリクエストを処理するために実行するURLの種類です。
https://openapi.us.cdnetworks.com/OpenAPI/services/CachePurgeAPI/executeCachePurge?userId=***&password=***&purgeUriList=http://urlhere.com?param1=here¶m2=here&purgeUriList=http:://url2here.com?param1=here
ドキュメントには、応答がXMLであると記載されています。ブラウザにアドレスを入力すると、どちらになりますか。しかし、PHPからリクエストを実行すると、XMLではないものが返されます。
次のようになります。
しかし、私が実際に取り戻すのはこれです:
000REQUEST ACCEPTEDhttp://cdn.oursite.com/blah.php?alt=1&cid=6291&campaign=126400&width=25010REQUEST ACCEPTEDhttp://cdn.oursite.co.uk/blah.php?alt=1&cid=6292&campaign=126401&width=250122';
これは、2回のフラッシュの成功例にすぎません。APIドキュメントには、返される可能性のある追加のエラーが多数示されています。
0: Successful; 2: Successful only in some URLs; 999: Temporary Error; 194 Too many URLs
個々の応答ごとに文字列を解析する必要はありません。返される最初の部分はresultCode、2番目はtotalURLNum、3番目は成功、4番目は失敗、そしてさらに多くの情報を含む結果リストです。
文字列を取得するための最初のPHPコード:
単純なfile_get_contentsリクエスト。
$result = file_get_contents(urlencode($url));
それから私はいくつかの赤いテキストを取り戻しました!!!
でcURLを使用し、 falseCURLOPT_SSL_VERIFYPEER
に設定しました。CURLOPT_SSL_VERIFYHOST
$aData = curl_exec($rData);
そしてこれは赤いテキストを返しました:
string '<ns:executeCachePurgeResponse xmlns:ns="http://control.webif.server.openapi.cdnetworks.com"><ns:return xmlns:ax21="http://cachepurge.purge.response.server.openapi.cdnetworks.com/xsd" type="com.cdnetworks.openapi.server.response.purge.cachepurge.CachePurge"><ax21:failureURLNum>2</ax21:failureURLNum><ax21:resultCode>2</ax21:resultCode>(etc)(etc) (length=1678)
SimpleXMLを使用してみました:
だから私はこれにsimplexmlを使ってみました。私はもう試した:
$xml = simplexml_load_string($aData);
また
$properties = $xml->xpath('//Property');
SimpleXMLを使用して初期ファイルをロードしてみました。
$result = simplexml_load_file($url)
どうすればこれを解析できますか?私が望むようにXMLを取り戻せないことは明らかであり、文字列は解析するのに悪夢になるでしょう。
私が現在していること:
cURL出力で次のPHPを実行しました。
$dom = new DOMDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($aData);
$dom->formatOutput = TRUE;
echo $dom->saveXml();
これにより、少しフォーマットされた出力が得られましたが、それでもXMLではないため、解析が容易ではありません!:
2 2 9999 Check your input. If it's not wrong, contact us please. http://cdn.whatever.co.uk/blah.php?alt=1&cid=6291&campaign=126400&width=250 0 0 REQUEST ACCEPTED http://cdn.whatever.co.uk/blah.php?alt=1&cid=6292&campaign=126401&width=250 1 9999 Check your input. If it's not wrong, contact us please. http://cdn.whatever.co.uk/blah.php?alt=1&cid=6291&campaign=126400&width=250 0 1 3
XMLのいずれかの側で使用<pre>
し、ソースを表示してから、コードをXMLバリデーターに入れると、falsexmlであることが返されます。
名前空間は取得できますが、それはXMLからデータを取得できる範囲です。XMLは無効です。開発チームはこれに取り組んでいます。