2011-01-03 16 views
1

SOAP認証が必要な.NETで作成されたWebサービスを使用しようとしています。あなたが最も興味を持つ部分は次のとおりです。soap認証ヘッダーを持つNetbeansで.NET Webサービスを使用する方法

<s:element name="SoapAuthenticationHeader" type="tns:SoapAuthenticationHeader" /> 
     <s:complexType name="SoapAuthenticationHeader"> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="Username" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string" /> 
     </s:sequence> 
     <s:anyAttribute /> 
     </s:complexType> 

Netbeansで正常にWebサービスを使用することができました。自動生成されたスタブ/メソッドでは、認証にユーザー名とパスワードを使用できないため、使用できません。 Iは、JAX-WSを使用する場合、少なくとも

JAX-WS

try { // Call Web Service Operation 
      org.tempuri.TeleCast service = new org.tempuri.TeleCast(); 
      org.tempuri.TeleCastSoap port = service.getTeleCastSoap(); 
      // TODO initialize WS operation arguments here 
      int campaignid = 0; 
      java.lang.String to = ""; 
      java.lang.String from = ""; 
      java.lang.String subject = ""; 
      java.lang.String body = ""; 
      java.lang.String uniqueid = ""; 
      // TODO process result here 
      boolean result = port.queueRealTimeEmail(campaignid, to, from, subject, body, uniqueid); 
      System.out.println("Result = "+result); 
     } catch (Exception ex) { 
      // TODO handle custom exceptions here 
     } 

JAX-RPC

try { // This code block invokes the TeleCastSoap:queueRealTimeEmail operation on web service 
      telecastclient.TeleCast teleCast = new telecastclient.TeleCast_Impl(); 
      telecastclient.TeleCastSoap teleCastSoap = teleCast.getTeleCastSoap(); 
      teleCastSoap.queueRealTimeEmail(/* TODO enter operation arguments*/); 
     } catch(javax.xml.rpc.ServiceException ex) { 
      java.util.logging.Logger.getLogger(telecastclient.TeleCast.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch(java.rmi.RemoteException ex) { 
      java.util.logging.Logger.getLogger(telecastclient.TeleCast.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch(Exception ex) { 
      java.util.logging.Logger.getLogger(telecastclient.TeleCast.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 

のNetBeans自動スタブのために以下を含む生成

私はユーザー名とパスワードを設定できるSoapAuthenticationHeaderというクラスを取得します。しかし、私は、SoapAuthenticationHeaderのオブジェクトをWebサービス呼び出しの前または途中で渡して、さまざまな操作を実行する方法を知らない。

org.tempuri.SoapAuthenticationHeader auth = new SoapAuthenticationHeader(); 
      auth.setUsername("username"); 
      auth.setPassword("password"); 

私は、JAX-RPCの方法でこのオプションを持っていません。

これに関するすべてのご意見をいただければ幸いです。あなたの時間を事前に感謝します。

答えて

0

デフォルトのNetbeans IDEでこれを行うためのエレガントな方法はないようです。

私は、Eclipseで同じことをしようとしていたし、すべての私の検索では、私はこのはApache Axis2のにリードした - 私はと私はまだリンクを投稿することができません(EclipseのプラグインのEclipseためのコードジェネレータウィザードガイド初心者)。

上記のプラグイン(WSDL2Javaの何らかのEclipseアドオン)を使用すると、検証のために渡すことができる適切なSoapAuthenticationHeaderオブジェクトと共にスタブが生成されました。

だから私のコードは次のとおりです。

TeleCastStub stub = new TeleCastStub(); 

SoapAuthenticationHeader auth = new SoapAuthenticationHeader(); 
auth.setUsername(username); 
auth.setPassword(password); 

QueueRealTimeEmail pageObj = new QueueRealTimeEmail(); 
pageObj.setFrom(from); 
pageObj.setTo(to); 
pageObj.setSubject(subject); 
pageObj.setBody(body); 

SoapAuthenticationHeaderE authE = new SoapAuthenticationHeaderE(); 
authE.setSoapAuthenticationHeader(auth); 

QueueRealTimeEmailResponse response = stub.queueRealTimeEmail(pageObj, authE); 

それだけで正常に動作します。

さて、これは多くの質問のカップルに私をリード:

  1. 私は axis2のプラグインを使用して、それについて行ってきた道を、私のコードスニペット、 は、それはそれを行うには正しい方法は何ですか? は時々私は私がちょうど 仕事をし、私はそれより良い次回 時間を行うことができますので、私はいつも 物事を行うための正しい方法を見つけることに 興味を取得するために一緒にハックを入れ この感覚を得ます。
  2. eclipseで組み込みコード 生成ウィザードを使用していたとき、私は に、Axis 実行時でAxis2ではなくオプションがあることに気づきました。だから今私の 質問です。旧バージョンの Axisまたは IDEの事前構築ツールでは、 特別認証ヘッダーを使用してWebサービスを使用する場合は、ちょうど を実行できません。それは建築上の限界のほうですか?

またお時間をありがとうございます。

この1枚、これ!何度も私の皮を救った。それで、今コミュニティに返すのは私の番です。

関連する問題