Skip to content
Advertisement

soap communication using Java socket works, but switching over to java soapconnection does not

I recently asked a question about building a SOAP message using the java provided soap library Changing default soap URI, so that question may end up bleeding into this one a bit depending on what the answer to the last one may be (and in fact, the answer to this question may mean that I don’t have to worry about my other question)

I’ve connected to the device I am communicating with via the java socket library and passed messages back and forth, however today I decided that with all that is available to me from java in the way of SOAP stuff, why not just use its provided SOAP library?

Well, it’s a headache now, but I’m sure it will be beneficial once it is up and running. Either way, when I previously communicated with the device, I simply opened the socket at IP address xxx.xxx.xxx.xxx on port 80, but when I use the SOAPConnection.call method I get the following error:

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

Here is the call, if that helps:

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

Where the xxx.xxx.xxx.xxx is obviously the IP address of the device (and I’ve tried calls to the SOAPConnection.call method where the second argument was http://xxx.xxx.xxx.xxx:80 without success as well).

After some perusing of stackoverflow and general google searches, I’ve yet to find someone that has had a problem switching from socket communication to soap.

EDIT:

Unfortunately, I haven’t solved the problem, however I did find using Wireshark that the message is being sent correctly and so is the response. I’m pretty perplexed as to why the response would see “null” – any takers?

Thanks in advance,

-M

Advertisement

Answer

SAAJ0008: Bad Response; null

This error message states that the server responded with an error message (e.g. HTTP 4XX or 5XX). null in this case refers to the java class not being able to translate the error code to an associated message. E.g. the status codes 400, 501 and 543 would yield the following error messages:

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

Most likely your server is rather picky with how the request is formatted, and the specific request you sent could not be handled properly. I would suggest that you try to verify the difference between the request sent using the java socket library and SOAPConnection to see if there is a difference.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement