美文网首页我爱编程
apache.http4.x的案例

apache.http4.x的案例

作者: dangbingqu | 来源:发表于2016-07-19 13:12 被阅读0次

    http://www.cnblogs.com/chenying99/p/3735282.html

    依赖

    1. httpclient-4.4.1.jar
    2. httpcore-4.4.1.jar

    不要引错了包

    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;

    Get请求示例

    CloseableHttpClient httpClient = HttpClients.createDefault(); 
        HttpGet httpget = new HttpGet(url.toString());
        CloseableHttpResponse  httpresponse = httpClient.execute(httpget);
        try {
            HttpEntity entity = httpresponse.getEntity();
            String responseBody = EntityUtils.toString(entity);
            // responseBody 就是返回的内容
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(httpClient != null){
                httpClient.close();
            }
            if(httpresponse != null){
                httpresponse.close();
            }
        }
    

    HTTP请求

    HttpClient支持HTTP/1.1这个版本定义的所有Http方法:GET,HEAD,POST,PUT,DELETE,TRACE和OPTIONS。对于每一种http方法,HttpClient都定义了一个相应的类:HttpGet, HttpHead, HttpPost, HttpPut, HttpDelete, HttpTrace和HttpOpquertions。
    HttpClient提供URIBuilder工具类来简化URIs的创建和修改过程。

    URI uri = new URIBuilder()  
        .setScheme("http")  
        .setHost("www.google.com")  
        .setPath("/search")  
        .setParameter("q", "httpclient")  
        .setParameter("btnG", "Google Search")  
        .setParameter("aq", "f")  
        .setParameter("oq", "")  
        .build();  
        HttpGet httpget = new HttpGet(uri);  
        System.out.println(httpget.getURI());
        //http://www.google.com/search?q=httpclient&btnG=Google+Search&aq=f&oq=  
    

    HTTP响应

    HttpResponse response = 
      new BasicHttpResponse(HttpVersion.HTTP_1_1,   HttpStatus.SC_OK, "OK");  
    HttpResponse response = 
    new BasicHttpResponse(HttpVersion.HTTP_1_1,   
    HttpStatus.SC_OK, "OK");  
    System.out.println(response.getProtocolVersion());  
    System.out.println(response.getStatusLine().getStatusCode());  
    System.out.println(response.getStatusLine().getReasonPhrase());  
    System.out.println(response.getStatusLine().toString());  
    

    结果

    HTTP/1.1  
    200  
    OK  
    HTTP/1.1 200 OK 
    

    消息头

    HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1,   
    HttpStatus.SC_OK, "OK");  
    response.addHeader("Set-Cookie",  "c1=a; path=/; domain=localhost");  
    response.addHeader("Set-Cookie", "c2=b; path=\"/\", c3=c; domain=\"localhost\"");  
    Header h1 = response.getFirstHeader("Set-Cookie");  
    System.out.println(h1);  
    Header h2 = response.getLastHeader("Set-Cookie");  
    System.out.println(h2);  
    Header[] hs = response.getHeaders("Set-Cookie");  
    System.out.println(hs.length);  
    

    结果

      Set-Cookie: c1=a; path=/; domain=localhost  
      Set-Cookie: c2=b; path="/", c3=c; domain="localhost"  
      2 
    

    HeaderIterator也提供非常便捷的方式,将Http消息解析成单独的消息头元素。

    HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1,   
    HttpStatus.SC_OK, "OK");  
    response.addHeader("Set-Cookie",   
    "c1=a; path=/; domain=localhost");  
    response.addHeader("Set-Cookie",   
    "c2=b; path=\"/\", c3=c; domain=\"localhost\"");  
    
    HeaderElementIterator it = new BasicHeaderElementIterator(  
    response.headerIterator("Set-Cookie"));  
    
    while (it.hasNext()) {  
        HeaderElement elem = it.nextElement();   
        System.out.println(elem.getName() + " = " + elem.getValue());  
        NameValuePair[] params = elem.getParameters();  
        for (int i = 0; i < params.length; i++) {  
            System.out.println(" " + params[i]);  
        }  
    }  
    

    结果

    c1 = a  
    path=/  
    domain=localhost  
    c2 = b  
    path=/  
    c3 = c  
    domain=localhost 
    

    HTTP实体

    相关文章

      网友评论

        本文标题:apache.http4.x的案例

        本文链接:https://www.haomeiwen.com/subject/zxvmjttx.html