java apache HC BasicHttpEntityEnclosingRequest vs BasicHttpRequest

时间:2013-08-24 13:48:35

标签: java http apache-httpclient-4.x

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

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

关于何时使用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

1 个答案:

答案 0 :(得分:1)

HTTP规范明确定义了POSTPUT作为可以包含请求内容主体的方法。对GETHEAD等其他方法附加请求机构是否合法是有争议的。

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