提问者:小点点

org. apache.http.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来形成post请求

你能帮忙吗


共1个答案

匿名用户

HttpRequest接口没有提供设置对应消息体的方法。BasicHttpRequest也没有

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

HttpEntity或多或少代表超文本传输协议消息体

可以通过HTTP消息发送或接收的实体。

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

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

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