0

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

2)。AndroidからJAX-WSWebサービスにアクセスするには、KSoap2-androidライブラリを使用します(このライブラリをサービスhttp://www.webservicex.net/ConvertWeight.asmxでテストしたところ、問題なく動作します)。しかし、 http://xxx.svc?wsdlで作業してください 。サービスに接続できません。Android ProgectからWebサービスクライアントを生成すると、次のエラーが発生します: "IWAB0399E WSDLからJavaを生成中にエラーが発生しました:java.io.IOException:エミッターエラー。WSDLドキュメントに未定義のバインディング(BasicHttpBinding_ICustomerService)があります。ヒント:確認してください完全に資格があります。」

3)。Webサービスクライアントからservice.jarを作成します。これは、Android Progectでどのようにlibを使用しましたが、機能していません。

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

[2012-06-26 17:25:33-TranscribeMe_2.2]Dx1エラー。中止[2012-06-2617:25:33--TranscribeMe_2.2]Dalvik形式への変換がエラー1で失敗しました[2012-06-2617:26:32--TMP] Dx警告:匿名内部クラスのInnerClasses属性を無視します(org.ksoap2.transport.KeepAliveHttpsTransportSE $ 1)関連するEnclosingMethod属性が付属していません。このクラスは、おそらく最新の.classファイル形式を対象としないコンパイラによって生成されました。推奨される解決策は、最新のコンパイラを使用し、「-target」タイプのオプションを指定せずに、ソースからクラスを再コンパイルすることです。この警告を無視した結果、このクラスに対するリフレクティブ演算は、そうではないことを誤って示します。内部クラス。[2012-06-2617: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]Dx1エラー。中止[2012-06-2617:26:33-TMP]Dalvik形式への変換がエラー1で失敗しました

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

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:12:17.423 に答える