0

私は最近、Java が提供するSOAPライブラリを使用して SOAP メッセージを作成することについて質問しました。この質問への回答は、他の質問について心配する必要がないことを意味する場合があります)

Javaソケットライブラリを介して通信しているデバイスに接続し、メッセージをやり取りしましたが、今日、SOAPの方法でJavaから利用できるすべてのものを使用することにしました。 SOAP ライブラリ?

まあ、今は頭が痛いですが、稼働したらきっと役に立つと思います。いずれにせよ、以前にデバイスと通信したときは、 の IP アドレスxxx.xxx.xxx.xxxでソケットを開いただけですが、この方法をport 80使用するSOAPConnection.callと、次のエラーが発生します。

Apr 23, 2012 3:47:06 PM com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
SEVERE: SAAJ0008: Bad Response; null
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (-1null
    at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source)
    at DeviceCommunicator.openConnection(DeviceCommunicator.java:184)
    at ClientRunner.main(ClientRunner.java:29)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (-1null
    at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
    ... 3 more

それが役立つ場合、これが呼び出しです:

SOAPConnection sc = SOAPConnectionFactory.newInstance().createConnection();
        SOAPMessage response = sc.call(sm, "http://xxx.xxx.xxx.xxx");

ここで、は明らかにデバイスの IP アドレスです (そして、2 番目の引数が成功しなかっxxx.xxx.xxx.xxxたメソッドへの呼び出しも試みました)。SOAPConnection.callhttp://xxx.xxx.xxx.xxx:80

stackoverflow と一般的な Google 検索を熟読した後、ソケット通信から SOAP への切り替えで問題が発生した人をまだ見つけていません。

編集:

残念ながら、私は問題を解決していませんが、Wireshark を使用して、メッセージが正しく送信されていることがわかり、応答も同様です。応答が「null」と表示される理由について、私はかなり困惑しています-テイカーはいますか?

前もって感謝します、

-M

4

2 に答える 2

0
SAAJ0008: Bad Response; null

このエラー メッセージは、サーバーがエラー メッセージ (HTTP4XXまたは など5XX) で応答したことを示しています。この場合の null は、Java クラスがエラー コードを関連するメッセージに変換できないことを示します。たとえば、ステータス コード 400、501、および 543 は、次のエラー メッセージを生成します。

SAAJ0008: Bad Response; Bad Request
SAAJ0008: Bad Response; Not Implemented
SAAJ0008: Bad Response; null

ほとんどの場合、サーバーはリクエストのフォーマット方法にかなりうるさいため、送信した特定のリクエストを適切に処理できませんでした。Java ソケット ライブラリを使用して送信されたリクエストと SOAPConnection の違いを確認して、違いがあるかどうかを確認することをお勧めします。

于 2012-04-23T21:02:57.523 に答える