この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 26959|答える: 0

[出典] C# WebサービスサーバーへのJava呼び出しはHTTPヘッダーSOAPActionの値を認識しません

[リンクをコピー]
2021年3月4日 13:19:39に投稿 | | | |
なぜC#を呼び出すWebサービスの報告サーバーは、httpヘッダーの値SOAPActionを認識せず、C#が常に変更させてしまうのでしょうか。C#はタグを追加するだけでよく、なぜJAVAはアクションリクエストを指定できないのでしょうか?



Webサービスの公開と呼び出しは非常に簡単ですが、まだ小さな問題があり、以下のようにまとめられます。

Javaは.netのwebServiceを「Server failed to recognition the value of HTTP header SOAPAction」エラーで呼び出します。

解決:

ウェブサービスを呼び出す際にはSoapActionやRequestNameSpaceが指定されないため、リクエスト時に必ず「サーバーがHTTPヘッダーSOAPActionの値を認識できません」と表示されます。

Axisコールを使用する場合、次のように呼びます。


public static void main(String[] args) は例外を投げる {  
    持ってこない? WSDLの接尾辞
    文字列端点 = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";
  サービスコールを作成する     
  サービスサービス = 新しいサービス();
  サービスを通じて呼び出しオブジェクトを作成する
  コールコール = (Call) service.createCall();   
  サービスがあるURLを設定しましょう   
  call.setTargetEndpointAddress(new java.net.URL(endpoint));   
  qqCheckOnlineはネット側の「http://WebXml.com.cn/」メソッドであり、名前空間のアドレスも注意し、持参しなければエラーを報告します
  call.setOperationName(new QName("http://WebXml.com.cn/","qqCheckOnline));
  qqCodeは.NETメソッドのパラメータ名でもあり、qqCheckOnlineのパラメータ名でもあります
  call.addParameter(new QName("http://WebXml.com.cn/","qqCode"),
         org.apache.axis.encoding.XMLType.XSD_STRING、javax.xml.rpc.ParameterMode.IN);
  Javaが.netのwebServiceを呼び出し、「The server failed didn't aware the value of the HTTP header SOAPAction」というエラーを出さないようにしてください。
  call.setUseSOAPAction(true);
  call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); 返されたパラメータの種類
  call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); また、呼び出すメソッドも追加しなければエラーが報告されます
  オブジェクト配列はパラメータをカプセル化します     
  String ret = (String) call.invoke(new Object[] {"aaaaa"});   
  System.out.println("--------"+ret);
    }

コメント欄に注目してください。

ハイパーリンクのログインが見えます。? WSDLはパブリック・ウェブ・サービスの略です

以下の例外は、CXFを使用するwsdl2java.batがwsdルファイルに基づいて.netウェブサービスを公開するクライアントを生成する場合です


(未定義要素宣言 's:schema')

解決:

wsdl.xmlを開いて使ってください


<s:any minOccurs="2" maxOccurs="2" />代替 <s:element ref="s:schema" /><s:any />
このwsdl2java生成エラーは、JAXBがxml参照をサポートしていないことに起因しているはずです。なぜなら<s:any minOccurs="2" maxOccurs="2"/>と <s:element ref="s:schema" /><s:any/>は実際には同等だからです。 <s:element ref="s:schema" /> は実際には、ここで s:schema で指定された任意の要素タイプを使えることを意味します。<s:any /> がこの役割を担い、<s:any minOccurs="2" maxOccurs="2"/> は単なる2つの <:any />

一文で書かれていた。

参考ハイパーリンクのログインが見えます。

CXFのwsdl2java.batを使うと、wsdlファイルに基づいてクライアントコンパイルのスーパーエラーが発生します

解決:

しかし、jax-ws2.2仕様がjava6と衝突するため、正しくコンパイルされません。

しかし、このプログラムはjava5のみでコンパイルできないため、jax-ws仕様のバージョンを下げる必要があります。これは次のように扱えます:コマンドを実行する

WSDL2Java -frontend jaxws21 -client *.xml

このようにして、jax-ws2.1で生成されたコードはjava6でコンパイル・実行可能です。

ツールで生成されたクライアントコードとテキスト比較を比較したところ、後者がさらに3つのクライアントコードを生成したため、エラーを報告した3つのコンストラクタを削除することで上記の問題も解決できます。

転載元:ハイパーリンクのログインが見えます。




先の:.NET/C#はBenchmarkDotNetを使ってコードのパフォーマンスをテストします
次に:Consul HTTP APIインターフェース呼び出し
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com