首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java编程请求SOAP服务问题

Java编程请求SOAP服务问题
EN

Stack Overflow用户
提问于 2016-10-24 18:07:26
回答 2查看 232关注 0票数 0

我试图通过Java以编程方式向端点发出SOAP请求。我对Java和web服务还比较陌生,所以我不知道我在这里做错了什么。

此外,我还打印出SOAP消息,并可以将其粘贴到一个像postman这样的工具中,然后输入端点,这样post就成功了。所以我觉得我的要求不对。

这是我的代码:

代码语言:javascript
运行
复制
    System.out.println("hey now!!!!");

    try {
        SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
        SOAPConnection connection = scf.createConnection();     

        MessageFactory mf = MessageFactory.newInstance();
        SOAPMessage message = mf.createMessage();
        SOAPBody body = message.getSOAPBody();  

        SOAPHeader header = message.getSOAPHeader();

        SOAPElement getOpenPOs = body.addChildElement("GetOpenPOs", "", "https://www.autocrib.net");

        SOAPElement U = getOpenPOs.addChildElement("U");
        U.addTextNode("u");
        SOAPElement P = getOpenPOs.addChildElement("P");
        P.addTextNode("p");
        SOAPElement N = getOpenPOs.addChildElement("N");
        N.addTextNode("n");         
        SOAPElement Processed = getOpenPOs.addChildElement("Processed");
        Processed.addTextNode("false");
        SOAPElement StationEnd = getOpenPOs.addChildElement("StationEnd");
        StationEnd.addTextNode("");         
        SOAPPart sp = message.getSOAPPart();
        SOAPEnvelope envelope = sp.getEnvelope();

        //MimeHeaders headers = message.getMimeHeaders();
        //header.setHeader("Content-Type", "text/xml");
        //message.getMimeHeaders().addHeader("SOAPAction", "GetOpenPOs");
        message.getMimeHeaders().addHeader("Content-Type", "text/xml");
        header.setAttribute("Content-Type", "text/xml");

        message.saveChanges();

        System.out.println("Envelope Body");

        message.writeTo(System.out);
        System.out.println();

        SOAPMessage reply = connection.call(message, 
                "https://www24.autocrib.net/WebServices/AutoCribWS.asmx");

        //String reply2 = connection.call(message, "https://www24.autocrib.net/WebServices/AutoCribWS.asmx").toString();

        //sp = reply.getSOAPPart();
        //envelope = sp.getEnvelope();
        //body = envelope.getBody();

        //System.out.println(body.toString());
        System.out.println("Done!!!!!!!!!!!!!!!!!!!");

    } catch (Throwable t) {
        System.out.println("Something went wrong!!! " + t.toString());
    }
}

当我运行以下代码时,我会得到这个错误:

2016年10月24日下午1:56:57 com.sun.xml.internal.messaging.saaj.soap.MessageImpl identifyContentType : SAAJ0537:无效内容-类型。可能是错误消息,而不是SOAP消息--出了问题!com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:无效内容-类型:text/html。这是一个错误消息而不是SOAP响应吗?

我猜我需要添加Content-Type头。我做得不对吗?任何指导都是很好的。

谢谢你,蒂姆

EN

回答 2

Stack Overflow用户

发布于 2016-10-24 20:42:47

com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:无效内容-类型:text/html。

SAAJ抛出一个异常,因为它认为web服务返回的是响应文本/html内容,而不是soap/xml内容。

因此,有人建议:研究邮递员返回的内容。您确定它是soap/xml格式吗?您会注意到,它不是soap/xml内容,它致力于您的WS的实现,并在需要时调整返回以符合SOAP规范。

票数 0
EN

Stack Overflow用户

发布于 2016-10-25 17:48:11

威尔科,我想赞扬你的回答,但我认为我不能这样做的评论。您的提示帮助我了解到,由于我拥有的用户代理头,它确实返回了text/html。

又是THanks!!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40224735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档