我想向Soap Web服务发出发布请求。

我这样做:

private static HttpClient client = HttpClientBuilder.create().build();
    private static HttpHost host = new HttpHost("localhost", 8080);
HttpRequest requset = new BasicHttpRequest("POST",
                "/iOSS bla bla bla");
        requset.addHeader("Authorization", "Basic c21hcnQ2ODYzOnNtYXJ0Njg2Mw==");
        requset.addHeader("Content-Type",
                "multipart/related; type=\"text/xml\"; boundary=\"--=Part1=-- \"");
        requset.addHeader("SOAPAction", "");


我不知道如何添加请求的正文。我没有找到解决方法

请注意,我正在使用HttpRequest形成Http请求,而不是在使用HttpPost形成发布请求

你能帮忙吗

最佳答案

HttpRequest接口没有提供设置相应消息正文的方法。 BasicHttpRequest也不

您需要更深入地了解继承层次结构,并使用HttpEntityEnclosingRequest(它公开了setEntity(HttpEntity)方法及其默认实现BasicHttpEntityEnclosingRequest)。

HttpEntity或多或少代表http消息正文。 javadoc状态


  可以与HTTP消息一起发送或接收的实体。


有许多受支持的实现,例如。 StringEntityByteArrayEntityFileEntity等。如果这些还不够好,您可以编写自己的。



另外,我建议您使用代表每种方法的各种HttpXyz类,例如。 HttpPost。这些类型在适当的时候已经带有setEntity(HttpEntity)方法(HttpPost有一个,但是HttpGet不需要,因为GET请求不需要正文)。

HttpClient提供了execute(...)方法重载,可以接受HttpRequest对象(URI应该是绝对的),而其他方法也可以提供HttpHost来解析路径。

关于java - org.apache.http.HttpRequest如何添加主体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32591261/

10-11 06:41