0

1).WSDL から Web サービス クライアントを生成しました (Axis2 1.5 カーネル、wsdl2java、Tomcat 7.0 を使用)。

2)。Android から JAX-WS Web サービスにアクセスするには、KSoap2-android ライブラリを使用します (サービスhttp://www.webservicex.net/ConvertWeight.asmxでこのライブラリをテストしたところ、問題なく動作しました)。しかし、http://xxx.svc?wsdlで作業すると、サービスに接続できません。Android Progect から Web サービス クライアントを生成すると、次のエラーが表示されます。十分な資格があります。」

3)。Web Service Client から、Android Progect で lib を使用する service.jar を作成しましたが、動作しませんでした。

4)。ksoap2 を使用すると、次のエラーが発生します。

[2012-06-26 17:25:33 - TranscribeMe_2.2] Dx 1 エラー。中止 [2012-06-26 17:25:33 - TranscribeMe_2.2] エラー 1 で失敗した Dalvik 形式への変換 [2012-06-26 17:26:32 - TMP] Dx 警告: 匿名内部クラスの InnerClasses 属性を無視しています(org.ksoap2.transport.KeepAliveHttpsTransportSE$1) 関連付けられた EnclosingMethod 属性が付属していません。このクラスは、最新の .class ファイル形式を対象としていないコンパイラによって生成された可能性があります。推奨される解決策は、最新のコンパイラを使用し、「-target」型オプションを指定せずに、ソースからクラスを再コンパイルすることです。この警告を無視すると、このクラスに対するリフレクション操作によって、このクラスが内部クラスではないことが誤って示されます。[2012-06-26 17:26:33 - TMP] 「javax/xml/ws/Dispatch.class」を処理する Dx のトラブル:

コア ライブラリを構築しない場合のコア クラス (java.* または javax.*) の不適切な使用または誤った使用。

これは多くの場合、IDE (Eclipse など) を使用しているときに、コア ライブラリ ファイルをアプリケーションのプロジェクトに誤って含めたことが原因です。コア クラスを意図的に定義していないことが確実な場合は、これが何が起こっているかの最も可能性の高い説明です。

ただし、実際にはコア名前空間でクラスを定義しようとしている可能性があります。そのソースは、たとえば Android 以外の仮想マシン プロジェクトから取得した可能性があります。これは確実に機能しません。少なくとも、アプリとプラットフォームの将来のバージョンとの互換性が損なわれます。また、合法性が疑わしいこともよくあります。

アプリケーションをコンパイルするのではなく、完全な仮想マシン ディストリビューションを作成する一部としてのみ適切なコア ライブラリをビルドする場合は、「--core-library」オプションを使用してこのエラー メッセージを抑制します。

「--core-library」を使用しても実際にはアプリケーションをビルドしている場合は、アプリケーションがまだビルドまたは実行に失敗する可能性があることに注意してください。たとえば、オペレーティング システムをアップグレードすると、アプリケーションが機能しなくなったことに気付いた顧客が怒っていることに備えてください。この問題の責任はあなたにあります。

たまたまコア パッケージにあるコードを合法的に使用している場合、最も簡単で安全な代替手段は、そのコードを再パッケージ化することです。つまり、問題のクラスを独自のパッケージ名前空間に移動します。これは、コア システム クラスと競合しないことを意味します。JarJar は、この取り組みに役立つツールです。これができないとわかった場合、それはあなたがたどっている道が最終的に痛み、苦しみ、悲しみ、嘆きにつながることを示しています.

[2012-06-26 17:26:33 - TMP] Dx 1 エラー。中止 [2012-06-26 17:26:33 - TMP] エラー 1 で失敗した Dalvik 形式への変換

私を助けてください...

4

1 に答える 1

0

StackOverFlow で Axis および WCF/WSDL の問題を検索すると、回答や提案がなくても多くのことが見つかるため、できることは多くありません。

次のエラーについて:

There is an undefined binding (BasicHttpBinding_ICustomerService) in the WSDL document.
Hint: make sure is fully qualified."

この問題は、おそらく ICustomerService バインディングの定義方法に関連していると言えます。BasicHttpBinding を選択したので、すべてのパラメータが正しいことを確認してください。Axis が生成した WSDL を確認すると、簡単に確認できます。

また、名前空間の問題が発生し、Axis WSDL が service.svc?wsdl=wsdl0 および service.svc?wsdl=wsdl1 を生成する場合もあります。その場合は、各データ コントラクトの名前空間属性をメッセージ ヘッダー、本文と共に追加し、Web サービス エンド ポイントに bindingnamespace 属性を追加することで、名前空間の問題を解決できます。

私の最初の提案は、単純な C# クライアント アプリケーションを作成し、Windows Azure WCF サービスに接続して、BasicHttpBindings を使用して問題なく接続できることを確認してから、Java アプリを使用して同じことを行うことです。問題が発生した場合は、2 つのネットワーク トラフィックを比較して違いを確認し、根本的な原因を特定するのに役立つ可能性があります。非常に具体的な問題については、SO で質問してください。適切なヘルプが得られます。幸運を!!

于 2012-06-28T20:13:36.877 に答える