簡體   English   中英

Java以編程方式請求SOAP Web服務問題

[英]Java Programatically Request SOAP Web Service Issue

我試圖通過Java以編程方式向端點發出SOAP請求。 我是Java和Web服務的新手,所以不確定在這里做錯了什么。

另外,我打印出SOAP消息,並將其粘貼到諸如postman之類的工具中,然后輸入終點,然后發布成功。 所以我認為我的要求在這里不正確。

這是我的代碼:

    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.MessageImplidentificationContentType嚴重:SAAJ0537:無效的內容類型。 可能是錯誤消息,而不是SOAP消息出問題了!!! com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:無效的Content-Type:text / html。 這是錯誤消息,而不是SOAP響應嗎?

我猜我需要添加Content-Type標頭。 我做錯了嗎? 任何指導都會很棒。

謝謝,蒂姆

com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:無效的Content-Type:文本/ html。

SAAJ API引發異常是因為它認為您的Web服務返回的是響應文本/ html內容,而不是soap / xml內容。

因此,一個建議:研究郵遞員返回的內容。 您確定它是soap / xml格式的嗎? 您會注意到,這不是soap / xml內容,可以在WS的實現上進行工作,並且如果需要,可以調整收益以符合SOAP規范。

威爾科我想為您提供答案,但我認為我不能對此發表評論。 您的提示幫助我弄清楚了由於我擁有的用戶代理標頭,它確實在返回text / html。

再次感謝!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM