使用CXF解析wsdl文件生成webservice的客户端后,在调用时可能会爆出这个问题,这是因为客户端调用接口发送的soap协议和服务端接口接受的soap协议不一致所致,在Eclipse或者MyEclipse中,可以使用TCP/IP Monitor 进行监控,查看客户端方和服务端方的soap协议版本。
在我的实际应用中,生成java代码后,调用接口发生了A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint.错误,监控通信内容如下:
这是我发送出去的,使用的是soap1.1的协议;
这是服务器端返回的信息,由图可知服务端使用的是soap1.2的协议。
我尝试了更改wsdl的头文件声明,再生成的java类还是一样的错误。后来查看cxf源码得知soap的默认版本是soap1.1,需要在生成接口实例前修改soap版本为1.2。
代码如下: