前の記事では、WebServiceチュートリアル(i)の詳細な説明を紹介しました。
ツールを使用する理由:
1.ツールを使用して、WebServiceリクエストのプロセスをよりよく理解する
2。ツールWSEXPloreを使用して、SOAPデータ送信と受信の形式を取得します。
3.ツールTCP/IPモニターを使用して、インターセプターリクエストヘッダーと応答ヘッダーの特定のデータを監視する
石鹸とは何ですか?
SOAPは、XMLエンコード仕様に基づくテキストプロトコルです。簡単に言えば、SOAPはHTTPでXMLデータを送信してリモートコールを実現することです[SOAPプロトコルのXMLデータを受信し、SOAPプロトコルのXMLデータを返す限り、サーバーがどの言語で書かれていても、任意の言語で呼び出すことができます)
wsexplorerインスタンスの使用:qqがオンラインであることを確認します
qqonlinewebservicesoapでqqcheckonline検証を使用する場合、返されたis
qqcheckonlineresponse
qqcheckonlineresult(string):n
ソースをクリックして詳細情報を表示します。情報は次のとおりです。
1:これはメッセージ形式です。
コードコピーは次のとおりです。
http://schemas.xmlsoap.org/soap/envelope/ "xmlns:q0 =" http://webxml.com.cn/ "xmlns:xsd =" http://www.w3.org/2001/xmlschema " xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance">
-
-
870931520
2:以下は受信したXML形式です
コードコピーは次のとおりです。
http://schemas.xmlsoap.org/soap/envelope/ "xmlns:xsd =" http://www.w3.org/2001/xmlschema "xmlns:xsi =" http://www.w3.org/2001/xmlschemastance ">
-
-http://webxml.com.cn/ ">
n
QONLINEWEBSERVICEHTTPGETまたはQONLINELLINEWEBSERVICEHTPPOSTを使用する場合、返されたものはすべてです
nhttp://webxml.com.cn/ "> n>
TCP/IPモニターの使用
TCP/IPモニターは、SOAPデータを表示するだけでなく、HTTPリクエストとレセプションのヘッダー情報を取得できます。
1。場所:このツールは次の場所にあります:ウィンドウ> show view> other> myeclipse common(common tools)> tcp/ipモニター
2。このツールはエージェントと同等です。起動後、ローカルポートを聴き、指定されたターゲットIPとポートにリクエストを転送します。
データを取得した後、データをそのまま顧客に返します。顧客の目には、このエージェントが常に最初にアクセスする必要があります。そうしないと、データ送信のプロセスが表示されません。
3。構成オプション:
オープンTCP/IPモニターインターフェイス:表示メニュー(右上方向の小さな矢印)>プロパティ>追加(右に追加)
次のプロパティに設定します。
最初のステップ:
1)ローカル監視ポート(ローカルポート番号を聞く):9876、4ビットポート番号を自由に設定し、http://127.0.0.1:9876の形式でアクセスされます
2)ホスト名(www.vevb.comなどのサーバー):127.0.0.1マシンはWebサービスを公開するため、ネイティブIPを監視します。また、どのホストでもあります。
3)ポート(聴くべきターゲットサーバーのポート):6666-公開したWebサービスはhttp://127.0.0.1:6666/helloworld、6666は聞く必要があるポート番号です。
4)タイプ(リスニングのタイプ):
-TCP/IP:元のアドレスは、ユーザー入力など、次のリクエストへのアクセスを継続するために使用されます。http://127.0.0.1:9876/helloworld?wsdlは、以前と同様にWSDLサービスアクセスアドレスに戻ります。
-HTTP:宛先アドレスは引き続き次のリクエストにアクセスします。ユーザー入力として:http:///127.0.0.1:9876/helloworld?wsdlはhttp://127.0.0.1:6666/helloworldを使用して、メソッドを要求するときにSayhiメソッドにアクセスします。このメソッドはもはやプロキシではありません。それはもはや聴かれているポート番号ではないからです。
リスニングタイプで、TCP/IPを選択し、http://127.0.0.0.1:9876/helloworld?wsdlで入力して、返されたWSDLファイルのアドレスの変更を確認しました。
タイムアウト:アクセスが失敗したときに接続時間を設定し、0に保ちます。つまり、設定されていません。
設定後、[OK]ボタンをクリックし、右側の[スタート]ボタンをクリックすると、監視が開始されます。
ステップ2:
MyeClipse WebServiceでWSDL URLを構成します。http:///127.0.0.1:9876/helloworld?wsdl、Myeclipse TCP/IPモニターのポートが使用されていることに注意してください。 http://127.0.0.1:6666/hhelloworld?wsdlに直接訪問する代わりに公開されました
WSDLファイルのコンテンツを変更する方法は?
WebServiceの注釈を使用します。
1。 @webervice-definitionサービス
2。 @webmethod-definitionメソッド
3。 @webresult-definition return値
4。 @webparam-defineパラメーター
注:さまざまなバージョンがさまざまなレベルのコメントをサポートしています:
1。1.5はサポートされていません。
2。1.6.0_20の前のバージョンは、完全な注釈を使用する必要があります。
3。1.6.0_21の後、@Webserviceを使用してクラスに注釈を付けます。
コメントの機能:
WebServiceのコメントを通じて、Webサービスをより鮮明に説明できます。これにより、WSDLドキュメントが生成されます。
WebService注釈が変更されると、クライアントによって生成されたコードも影響します。
呼び出されたメソッドとパラメーター名も変更されました。
例:
@webservice(name = "myname"、//対応するporttype name = "myname" portname = "myport"、対応するポート名= "myport" servicename = "myservice"、//対応するサービスname = "myservice" targetnamespace = "http:// lead.com SimpleDateFormat sdf = new SimpledateFormat( "yyyy-mm-dd hh:mm:ss"); @webmethod(action = "myaction"、// soapaction = "myaction"を定義する操作name = "myoperationname"を実行するこのメソッドを見つける)//呼び出されるメソッドを定義し、操作name = ".." public @webresult(namehelloresult ")define")wubles @webresult "public @webresult" public @webresult ") "こんにちは世界"; } @webmethod(action = "mysayhiaction"、operationname = "mysayhioperationname")public @webresult(name = "mysayhiresult")stringhi(name = "myparaname"、//パラメータをヘッダー情報に置く) "+name+"、現在の時刻は次のとおりです。 strを返します。 } public static void main(string [] args){endpoint.publish( "http://127.0.0.1:6666/helloworld"、new helloworld()); }}3:上記のプログラムが一般に公開された後、MyeClipseのWebService Explorerを介してアクセスします
以前とは異なる迅速なメッセージが見つかりますが、実際には同じ方法が呼び出されています。
4:wsimport sを再度使用します。 http://127.0.0.0.1:6666/hhelloworld?wsdl javaコードを生成し、次のコードを呼び出すことは呼び出しコードです(認識できないと説明できますが、同じ作業が行われます)。
パッケージcom.leaf.mynamespace; public class main {public static void main(string [] args){// wsdlを分析することにより、myserviceからのgetmyportの呼び出しがmyname myname myname = new myservice()。getMyport()を返すことがわかります。 // myname string str = myname.mysayhioperationname( "wang jian")のmysayhioperationnameを介してsayhiメソッドを呼び出します。 System.err.println(str); }}WebServiceチュートリアルの詳細な説明(ii)最初にここで紹介させてください、私はそれがあなたに役立つことを願っています!