org.apache.http.HttpRequest如何添加正文

时间:2015-09-15 16:36:09

标签: java apache soap httprequest

我想向肥皂网服务发帖子。

我这样做了:

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来形成帖子请求

你可以帮忙吗

1 个答案:

答案 0 :(得分:2)

HttpRequest接口不提供设置相应邮件正文的方法。 BasicHttpRequest

也没有

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

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

  

可以使用HTTP消息发送或接收的实体。

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

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

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