php-Curlはxmlではなくテキストを解析しています
運送業者から料金見積もりを取り戻そうとしています。解析された情報が返されますが、xmlではなく生データの形式です。応答の要素を1回だけ解析できるように、XMLで必要です。これが私が使用しているコードです:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
require_once('Curler.php');
use grafhax\Curler;
$soap = file_get_contents('request.xml');
//print_r($soap);exit;
$user= '******';
$pass= '*******';
$curl = new Curler();
$curl->fail_on_error = 0;
$curl->debug=true;
$curl->SetHeader('Content-Type', 'text/xml;charset="utf-8"');
//$curl->PostData('https://webservices.averittexpress.com/LTLRateQuoteService', $soap, false, true, false, '', "$user:$pass");
//var_dump($curl->response);
//exit;
//$curl->PostData('https://webservices.averittexpress.com/LTLRateQuoteService', $soap, $this- >lastUrl, true, false, '', "$user:$pass");
$curl->PostData('https://webservices.averittexpress.com/LTLRateQuoteService', $soap);
var_dump($curl->response);
次のような回答があります:
ライブラリ:Curlerセットヘッダー変数:Content-Type => "text / xml; charset =" utf-8 ""ライブラリ:Curler post request: " https://webservices.averittexpress.com/LTLRateQuoteService < / a> "string(3419)" HTTP /1.1100続行HTTP/1.1 200 OK日付:2014年11月17日月曜日16:30:47 GMT X-Powered-By:Servlet / 3.0 Content-Length:3107 Content-Type: text / xml; charset = utf-8 Content-Language:en-US Set-Cookie:BIGipServerPoolC = 84279562.20480.0000; path = / X-PvInfo:[S10413.C0.A0.R0.G0]。[OT/plaintext。 OG/ドキュメント]07816643490520RANDLEMANNC27317GREENSBOROSERVICE CENTERMiamiFL33101MIAMI SERVICE CENTER11 /17/20142Class6050037.48評価クラス50.0$187.40 [None] 0 [None] 0 [None] 0 [None] 0 [None] 0 [None] 0 [None] 0 0[なし]0[なし]0[なし]0$ 125.5667.0900CZARLITE $ 0.00 $ 17.0757.50 $ 78.91 $ 187.40 $ 187.40500Mon Nov 17 10:30:50 CST 2014 "
答え :
解決策:
コードの最も重要な部分を省略しました...
require_once('Curler.php');
^このインクルードファイルには、後で使用するクラスが含まれています:
$curl = new Curler();
^これには、cURLスクリプトのプログラムと実行方法に関するすべての関連情報が含まれています。
ここでの応答の多くは、明らかにopt CURLOPT_HEADERがtrueに設定されている場合です。これはデバッグには問題ありませんが、実際に関心があるものではありません。
実際にあなたの「Curler.php」をグーグル検索したところ、これが見つかりました。たまたま、使用している関数がヘッダーを強制的に返すようになっているので、この仮定は正しかったです。
また、Axis2 Webサーバーをグーグル検索しました。これは、リンク先のサーバーが言っていることだからです。彼らはあなたが呼び出すことができるさまざまな「オブジェクト/関数/メソッド」を提供しているようです
https://webservices.averittexpress.com/LTLRateQuoteService.HTTPEndpoint/getCustomerContact
^そのコマンドが有効かどうかはわかりませんが、おそらく正しい関数/リンクを使用する必要があります。正しい関数を使用している場合は、データを自分で解析する必要がある場合があります。サーバーがどのようにプログラムされているかを推測するのは非常に困難です。設定した人に連絡するか、コードやAPI/ドキュメントなどを確認する必要があります。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。