java apache HC BasicHttpEntityEnclosingRequest 与 BasicHttpRequest

标签 java http apache-httpclient-4.x

创建一个从数据源获取指令(步骤)并自动执行一些 HC(http://hc.apache.org Apache Http 客户端)操作的类。

希望能够执行 HTTP post、get 和直接(如向 Web 服务器发送 JSON 或 XML/soap 消息)调用。

对何时使用 BasicHttpEntityEnclosingRequest 与 BasicHttpReques 感到困惑 什么是封闭的? 现在我有步骤来初始化上下文,提供参数值、URL、方法等,当我想提交时,这就是我正在做的:

        HttpPost httpost = null;//todo correct method
        //HttpEntity resp = this.httpclient.e

        HttpEntityEnclosingRequest reqEntity1 = null;//use this
        HttpRequest reqEntity = new BasicHttpRequest(method, urls, httpVer );//or this?
        URL url = new URL(urls);
        String hostNm = url.getHost();
        int port = url.getPort();
        String sche = url.getProtocol();
        logger.info("scheme/ proto :" + sche);
        HttpHost  httpHost = new HttpHost (hostNm, port, sche);
        response = this.httpclient.execute(httpHost, reqEntity, localContext);

问题:使用一个或另一个或具有另一个属性来封装或常规 HttpRequest?

http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/HttpRequest.html

http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpRequest.html

http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/HttpEntityEnclosingRequest.html

最佳答案

HTTP 规范明确定义了只有POSTPUT 方法可以封装一个请求内容体。使用 GETHEAD 等其他方法来封装请求主体是否合法尚有争议。

HttpCore 遵循 HTTP 规范的严格解释,将常规请求表示为 HttpRequest,它不提供设置内容主体的方法。对于 PUTPOST 等方法,它提供扩展的 HttpEntityEnclosingRequest 以及用于请求实体操作的额外方法。

关于java apache HC BasicHttpEntityEnclosingRequest 与 BasicHttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419268/

相关文章:

java - 如何在 "if "语句中使用 switch 语句中的默认值进行验证?

http - SPDY 协议(protocol)是否消除了对无 cookie 域的需求?

java - OpenSTF API POST 远程连接

java - 如何使用 JACOB 更改 Activity 的 MS Word 窗口?

java - 链表toUppercase方法返回类型错误

java - Junit 在法语字符串断言上失败

perl - 在将请求从安全服务器重定向到非安全服务器期间,来自 PERL 脚本的 HTTP 错误 508

http - Cache-Control : max-age=0 and no-cache?有什么区别

java - 真正的方法执行而不是模拟

java - 配置 Apache HttpClient 以通过代理/负载平衡器访问服务(覆盖主机 header )