POST数据中的Java SOAP请求字符串

时间:2014-12-09 17:49:57

标签: java post soap

我不熟悉SOAP请求所以我一直在阅读它。我已经看过的示例和教程在SOAP信封中以xml格式构造请求。

示例:

private static SOAPMessage createSOAPRequest() throws Exception {
    MessageFactory messageFactory = MessageFactory.newInstance();
    SOAPMessage soapMessage = messageFactory.createMessage();
    SOAPPart soapPart = soapMessage.getSOAPPart();

    String serverURI = "http://ws.cdyne.com/";

    // SOAP Envelope
    SOAPEnvelope envelope = soapPart.getEnvelope();
    envelope.addNamespaceDeclaration("example", serverURI);

    /*
    Constructed SOAP Request Message:
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:example="http://ws.cdyne.com/">
        <SOAP-ENV:Header/>
        <SOAP-ENV:Body>
            <example:VerifyEmail>
                <example:email>mutantninja@gmail.com</example:email>
                <example:LicenseKey>123</example:LicenseKey>
            </example:VerifyEmail>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
     */

    // SOAP Body
    SOAPBody soapBody = envelope.getBody();
    SOAPElement soapBodyElem = soapBody.addChildElement("VerifyEmail", "example");
    SOAPElement soapBodyElem1 = soapBodyElem.addChildElement("email", "example");
    soapBodyElem1.addTextNode("mutantninja@gmail.com");
    SOAPElement soapBodyElem2 = soapBodyElem.addChildElement("LicenseKey", "example");
    soapBodyElem2.addTextNode("123");

    MimeHeaders headers = soapMessage.getMimeHeaders();
    headers.addHeader("SOAPAction", serverURI  + "VerifyEmail");

    soapMessage.saveChanges();

    /* Print the request message */
    System.out.print("Request SOAP Message = ");
    soapMessage.writeTo(System.out);
    System.out.println();

    return soapMessage;
}

但组织与服务器给我的示例请求是一行,其中包含URL中的请求:

http://sdmdataaccess.nrcs.usda.gov/Spatial/SDMNAD83Geographic.wfs?Service=WFS&Version=1.0.0&Request=GetFeature&OutputFormat=GML3&TypeName=MapunitPoly&FILTER=<Filter><Intersect><PropertyName>Geometry</PropertyName><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-95.1852448111,43.0186163988 -95.1853350008,43.0183961223 -95.1854898978,43.0183055981 -95.1858276893,43.0182603358 -95.1861146851,43.0183087828 -95.1862558373,43.0184050072 -95.186496397,43.0188380162 -95.1867287441,43.018969948 -95.1871860608,43.0190950058 -95.1872413814,43.0192924831 -95.1869109659,43.0195048805 -95.1863026073,43.019660449 -95.1860721056,43.0196581015 -95.185922908,43.0195072276 -95.1857936581,43.0191228335 -95.1853686954,43.0188252761 -95.1852448111,43.0186163988 -95.1852448111,43.0186163988</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></Intersect></Filter>

这里又是包裹和缩进以便于阅读:

http://sdmdataaccess.nrcs.usda.gov/Spatial/SDMNAD83Geographic.wfs?
    Service=WFS&
    Version=1.0.0&
    Request=GetFeature&
    OutputFormat=GML3&
    TypeName=MapunitPoly&
    FILTER=<Filter>
        <Intersect>
            <PropertyName>Geometry</PropertyName>
            <gml:Polygon>
                <gml:outerBoundaryIs>
                    <gml:LinearRing>
                        <gml:coordinates>
                            -95.1852448111,43.0186163988 
                            -95.1853350008,43.0183961223 
                            -95.1854898978,43.0183055981 
                            -95.1858276893,43.0182603358 
                            -95.1861146851,43.0183087828 
                            -95.1862558373,43.0184050072 
                            -95.186496397,43.0188380162 
                            -95.1867287441,43.018969948 
                            -95.1871860608,43.0190950058 
                            -95.1872413814,43.0192924831 
                            -95.1869109659,43.0195048805 
                            -95.1863026073,43.019660449 
                            -95.1860721056,43.0196581015 
                            -95.185922908,43.0195072276 
                            -95.1857936581,43.0191228335 
                            -95.1853686954,43.0188252761 
                            -95.1852448111,43.0186163988 
                            -95.1852448111,43.0186163988
                        </gml:coordinates>
                    </gml:LinearRing>
                </gml:outerBoundaryIs>
            </gml:Polygon>
        </Intersect>
    </Filter>

我不确定如何修改它来处理单行请求或修改请求以适应此系统。任何信息都会有所帮助。

1 个答案:

答案 0 :(得分:0)

那不是SOAP。这是一个简单的GET请求,其中一个参数是XML文档。因此,您只需使用Apache Http Components或类似内容发出GET请求。

请注意,如果您使用上述URL并通过浏览器(GET)请求它,您将获得XML响应(您需要对其进行适当的解析)