我想向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消息一起发送或接收的实体。
有许多受支持的实现,例如。 StringEntity
,ByteArrayEntity
,FileEntity
等。如果这些还不够好,您可以编写自己的。
另外,我建议您使用代表每种方法的各种HttpXyz
类,例如。 HttpPost
。这些类型在适当的时候已经带有setEntity(HttpEntity)
方法(HttpPost
有一个,但是HttpGet
不需要,因为GET请求不需要正文)。HttpClient
提供了execute(...)
方法重载,可以接受HttpRequest
对象(URI应该是绝对的),而其他方法也可以提供HttpHost
来解析路径。
关于java - org.apache.http.HttpRequest如何添加主体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32591261/