私はアドバイスを求めている初心者ですが、専門家の友人がアドバイスをくれることを願っています。ありがとうございます。
今朝早くから Web サービスの勉強を始めました。あまり専門的ではない参考書を持っていましたが、その中のメソッドを呼び出そうと思いました。しかし、一日中勉強しました。利用してもエラーが発生し続けたので、落ち込んでいました。
コードは次のとおりです:
$client = new SoapClient('http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?WSDL',array('encoding'=>') gb2312') );
$param=array('theStockCode'=>'sh600031');
$result = $client->__soapcall('getStockInfoByCode',$param); getStockInfoByCodeResult;
print_r($jg);
?> これだけです。サーバー コードはありません。Apache+php+mysql を使用しても検出できます。 one 方向は PHP に集中することです。実行後、次のエラー メッセージが表示されます。 致命的なエラー: SoapFault 例外が捕捉されません: [soap:Server] サーバーは要求を処理できません。 ---> オブジェクト参照がオブジェクトのインスタンスに設定されていません。 C:Program Files6000345.php:4 のスタック トレース: #0 C:Program Files6000345.php(4): SoapClient->__soapCall('getStockInfoByC...', Array) #1 C:Program Files6000345 で {main} がスローされました.php 行 4
...$param = array('theStockCode'=>'sh600031');$result = $soapClient->__soapCall('getStockInfoByCode', array($param));
...$param=array('theStockCode'=>'sh600031');$result = $soapClient->getStockInfoByCode($param);print_r($result->getStockInfoByCodeResult);
元のコードは以下の通りで、友人 $client = new SoapClient('http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?WSDL ',array('encoding '=>'gb2312'));
$param = array('theStockCode'=>'sh600031');
$result = $soapClient->getStockInfoByCode($param); ($result-> getStockInfoByCodeResult);
?>
友人の指示に従って実行すると、以下のエラーメッセージが表示されます。
致命的なエラー: 4 行目の非オブジェクトでメンバー関数 getStockInfoByCode() を呼び出しています
あなたの名前は $client です
soapclient と $client、1 つはインスタンス化されたオブジェクトで、もう 1 つは変数名です。これはまだ明確に区別でき、プログラム内で混乱はありません。私の現在の疑問は、コードに構文エラーがあるのか、それとも参照されるオブジェクトが標準化されていないのかということです。あるいは、wsdl ファイルのパスに問題があるのかもしれません。実際、目標はクライアントに株価を表示するという単純なものです。実際に試してみて結果を出します。再度、感謝します。
ああ?それは...ですか。明確に区別していますか?
これは何ですか? :
$client = new SoapClient('http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?WSDL',array('encoding'=>'gb2312'));
$param = array( 'theStockCode'=>'sh600031');
$result = $soapClient->getStockInfoByCode($param);
当然、次のようになります。 -> ;getStockInfoByCode($param);
試してみましたが、まだ動作しません。致命的なエラー: SoapFault 例外がキャッチされません: [HTTP] C:Program FilesApache Software FoundationApache2.2htdocsCreateSoap600033.php で URL を解析できません: 15 スタック トレース: #0 [内部関数]: SoapClient->__doRequest('__soapCall('getStockInfoByC...', Array) #2 {main} がスローされましたこのような長いエラー メッセージをどうすればよいかわかります。
$result = $client->__soapCall('getWeatherbyCityName',array('paramters'=>$param));しかし、標準のインターフェイス WSDL に変更してメソッドを引用すると、何度か試した結果、上記の記述方法を適用しないでください。パラメータを渡してスムーズに取得するメソッドを作成します
例: $param = array('theCityName'=>"Nanyang"); $result = $client->__soapCall('getWeatherbyCityName',array(' paramters'=>$param));
成功しましたが、ストックインターフェイスの WSDL に変更してメソッドを引用すると、何度も試した結果、解決策が見つかりました。配列の問題です。上記の記述方法を適用せずに、パラメータを渡すように記述方法を変更すると、スムーズに取得できます。具体的にどのような方法を使用すればパラメータを渡すことができますか? よろしくお願いします。 !"
私も最近石鹸について研究しています。投稿者の方からアドバイスをいただければ幸いです。ありがとうございます! ! !
結び目。理由を見つけてください。 PHP は非常に弱く、リモート サーバー上の天気予報インターフェイスを呼び出すことはできますが、同じ記述方法を使用してストック インターフェイスを呼び出すとエラーが頻繁に発生します。努力していないわけではなく、ただ検索範囲が広すぎて何をすればいいのか分からなかったのですが、幸いなことに、本当に幸運だったことがわかりました。結果的には 3 ~ 4 行のスクリプトしかなかったのですが、かなり苦労しました。 WSDL を見つけて、$client = new SoapClient というステートメントを使用してロードします。これは重要なステップです。次のステップは、私が間違った方向に進んでいると思ったメソッドを引用することです。例: $param = array('theCityName'=>"Nanyang");
$result = $client->__soapCall('getWeatherbyCityName',array('paramters'=>$param));しかし、標準のインターフェイス WSDL に変更してメソッドを引用すると、何度か試した結果、上記の記述方法を適用しないでください。パラメータを渡してスムーズに取得するメソッドの作成
WSDL を見つけて $client = new SoapClient というステートメントを使用してロードします。これは重要なステップです
その理由は次のとおりです。方法を引用することはできませんか?教えてください
あなた