我使用maven wsimport和

Java 1.7生成了SOAP客户端代码.

WSDL是由客户提供的,我相信它是一个支持.NET的SOAP服务器.

在调用该服务后,我不断收到如下错误:

The server sent HTTP status code 415: Cannot process the message

because the content type ‘application/soap+xml; charset=utf-8; was not

the expected type ‘text/xml; charset=utf-8’.

我试图通过自定义处理程序修改SOAPMessage类中的MimeHeader(我确实正确地将处理程序注册到链):

MimeHeaders mimeHeaders = msg.getMimeHeaders();

mimeHeaders.removeAllHeaders();

mimeHeaders.removeHeader("Content-Type");

mimeHeaders.addHeader(HttpHeaders.CONTENT_TYPE, "text/xml; charset=utf-8");

上面的代码似乎没有改变mimiHeaders里面的任何东西,vector对象似乎是不可变的….

然后我手动创建了SOAP消息

MessageFactory newInstance = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);

MimeHeaders he = new MimeHeaders();

he.addHeader("Content-Type", "text/xml; charset=utf-8");

String ss = "xxxxx";

InputStream in = new ByteArrayInputStream(ss.getBytes(StandardCharsets.UTF_8));

SOAPMessage createMessage = newInstance.createMessage(he, in);

createMessage.writeTo(System.out);

context.setMessage(createMessage);

msg.saveChanges();

这次SOAPMessage本身的mimeHeader和Content-Type都设置为

文/ XML;字符集= utf-8的

但服务器仍然通过相同的错误415 application / soap xml不期望……

我理解服务器似乎遵循SOAP 1.1这就是为什么它期望text / xml …但是当我创建工厂时我明确地将协议指定为1.1并手动设置mimeHeader.我真的很困惑

注意:使用SOAPUI或PostMan绝对没问题,只有在使用wsimport生成的java客户端时才会出现问题

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐