URLConnection不为SOAP 1.2设置Content-Type

时间:2015-05-13 09:02:05

标签: java web-services soap

我们有一个网络服务客户端,应该可以使用SOAP 1.1SOAP 1.2。目前我们遇到的问题是,设置的内容类型(代码)不是实际的内容类型(对SoapUI的监控显示了我们请求的不同内容类型)。

我们使用java.net.URLConnection

    private final String contentTypeSOAP12 = "application/soap+xml";

    private void createEndpoint() throws MalformedURLException {

    endpoint = new URL(new URL(webserviceConf.getUrl()), "", new URLStreamHandler() {

        @Override
        protected URLConnection openConnection(URL url) throws IOException {

            URL target = new URL(url.toString());
            URLConnection connection = target.openConnection(getProxy());
            connection.setConnectTimeout(CONNECT_TIMEOUT);
            connection.setReadTimeout(webserviceConf.getReadTimeout());
            setKeepAlive(connection);

            connection.setRequestProperty("TESTHEADER", "WERT1"); // works
            connection.setRequestProperty("Content-Type", contentTypeSOAP12);// does not work

            return connection;
        }
    });
}

通过监视SoapUI上的连接,我们可以看到连接头参数是

  • Content-Length 333
  • User-Agent Java / 1.8.0_20
  • TESTHEADER WERT1
  • 连接关闭
  • Content-Type text / xml; charset = utf-8
  • [..]

这表明我们能够为连接设置参数(参见" TESTHEADER"),但由于某种原因,我们对内容类型的设置不起作用。

我们尝试设置SOAP 1.2的内容类型时,我们的连接具有SOAP 1.1的内容类型。

1 个答案:

答案 0 :(得分:0)

显然,您使用的SOAP Framework是在获取URLConection后将Content-Type标头设置为SOAP 1.1值。因此,覆盖URLStreamHandler的解决方法不起作用。 SOAP框架的设置中应该有一些东西指定应该使用SOAP 1.2的HTTP绑定。

也许,this post有帮助。

Btw,使用哪个SOAP Framework?