2012-02-10 8 views
1

を取得する必要があります(クラスもヘッダーを定義します)石鹸、私はSOAPリクエストを送信するには、このクラスを持っている要求

class Personinfo 
{ 
    function __construct() { 
     $this->soap = new SoapClient('mysource.wsdl',array('trace' => 1)); 
    } 

    private function build_auth_header() { 
     $auth->BrukerID = 'userid'; 
     $auth->Passord = 'pass'; 
     $auth->SluttBruker = 'name'; 
     $auth->Versjon = 'v1-1-0'; 

     $authvalues = new SoapVar($auth, SOAP_ENC_OBJECT); 
     $header = new SoapHeader('http://www.example.com', "BrukerAutorisasjon", // Rename this to the tag you need 
     $authvalues, false); 

     $this->soap->__setSoapHeaders(array($header)); 
    } 

    public function hentPersoninfo($params){ 

     $this->build_auth_header(); 
     $res = $this->soap->hentPersoninfo($params); 
     return $res; 
    } 
} 

問題は、私の機能に問題があるということですし、応答はエラーです。私はどのようなコンテンツを私の要求と共に送るのかを知りたいのですが、どうすればいいのか分かりません。

$this->soap->__getLastRequestを呼び出すhentPersoninfo-functionでtry/catch-blockを試しましたが、常に空です。

私は間違っていますか?

+0

エラーは何ですか?エラーはどこから来たのですか?送信しているサーバーからのものである場合は、エラー応答を解析します。あなたが送信していることを知りたい場合は、wiresharkを試してください – KevinDTimm

答えて

5

サービスにプログラムでアクセスする前に、SoapUIを使用して、サービスに送信する必要があることを確認し、何を返すべきかを確認します。

このようにして、Webサービスに問題が存在しないことや、Webサービスへのアクセス方法を理解することができます。

これを理解したら、関連するSOAPフレームワークを必要なものにすることに焦点を絞ることができます。

+0

良いアイデア、それを見てください – OptimusCrime

+0

SoapUIまたはTCPMon(http://ws.apache.org/commons/tcpmon/)が役立ちます。 2番目のものはトラフィックを受け取り、プロキシのように動作するので、リクエストとその応答を示します。 – Alfabravo

+1

この回答を受け入れるのを忘れてしまったので少し遅くなりましたが、SoapUIは素晴らしいです。私は誰もが石鹸リクエストで騒ぐことをお勧めします。 – OptimusCrime

0

サーバーに何を送信しているかをすぐに調べるには、クライアントを自分のローカルサーバーに向けることができます。 SoapClientマニュアルをについて、あなたはサーバーの場所をこのように設定することができます。

$soap = new SoapClient(null, array('location' => "http://localhost/soap.php", 
            'uri'  => "http://test-uri/")); 

次に、あなたの地元のsoap.phpスクリプトでprint_r($_REQUEST)のようなものを使用することができます。

関連する問題