Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaSocket的soap通信可以工作,但切换到JavaSoapConnection则不行_Java_Sockets_Soap - Fatal编程技术网

使用JavaSocket的soap通信可以工作,但切换到JavaSoapConnection则不行

使用JavaSocket的soap通信可以工作,但切换到JavaSoapConnection则不行,java,sockets,soap,Java,Sockets,Soap,最近,我问了一个关于使用java提供的SOAP库构建SOAP消息的问题,因此这个问题可能会在最后一个问题的答案中有所涉及(事实上,这个问题的答案可能意味着我不必担心我的另一个问题) 我已经通过java套接字库连接到我正在与之通信的设备,并来回传递消息,但是今天我决定,既然java以SOAP的方式为我提供了一切,为什么不使用它提供的SOAP库呢 好吧,这是一个头痛现在,但我相信它将是有益的,一旦启动和运行。无论哪种方式,当我以前与设备通信时,我只是打开了端口80上IP地址xxx.xxx.xxx.x

最近,我问了一个关于使用java提供的SOAP库构建SOAP消息的问题,因此这个问题可能会在最后一个问题的答案中有所涉及(事实上,这个问题的答案可能意味着我不必担心我的另一个问题)

我已经通过java套接字库连接到我正在与之通信的设备,并来回传递消息,但是今天我决定,既然java以SOAP的方式为我提供了一切,为什么不使用它提供的SOAP库呢

好吧,这是一个头痛现在,但我相信它将是有益的,一旦启动和运行。无论哪种方式,当我以前与设备通信时,我只是打开了
端口80
上IP地址
xxx.xxx.xxx.xxx
处的套接字,但当我使用
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");
其中,
xxx.xxx.xxx.xxx
显然是设备的IP地址(我已经尝试调用了
SOAPConnection.call
方法,其中第二个参数是
http://xxx.xxx.xxx.xxx:80
也没有成功)

在仔细阅读了stackoverflow和一般的google搜索之后,我还没有发现有人在从套接字通信切换到soap时遇到问题

编辑:

不幸的是,我还没有解决这个问题,但是我确实发现使用Wireshark可以正确发送消息,响应也可以。我很困惑,为什么响应会显示“null”-任何接受者

提前感谢,

-M

此错误消息表示服务器响应了错误消息(例如HTTP
4XX
5XX
)。在本例中,null表示java类无法将错误代码转换为相关消息。例如,状态代码400、501和543将产生以下错误消息:

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

很可能您的服务器对请求的格式非常挑剔,并且无法正确处理您发送的特定请求。我建议您尝试验证使用java socket库发送的请求与使用SOAPConnection发送的请求之间是否存在差异。

这是一个老问题,但我在连接Zimbra SOAP UI时遇到了相同的问题。问题是soap地址问题。链接有正确的解决方案

再次感谢erik的快速回复!事实证明,我很快就说响应被正确发送了——响应的SOAP部分是正常的,但是我正在与之通信的设备实际上并没有使用HTTP头(它在本地网络上)进行响应,而只是SOAP xml。WiReSurk显示SOAP正在被正确地发送回来,但是在SOAP响应的中间突然被切断,并且我相信当java实现了没有HTTP头的时候,它就给了它斧头。看起来像是重载了调用函数或套接字。
SAAJ0008: Bad Response; Bad Request
SAAJ0008: Bad Response; Not Implemented
SAAJ0008: Bad Response; null