httpclient基本用法

本文详细介绍了Maven中httpclient的基础依赖配置与使用方法,包括初始化httpclient、生成GET请求、构建HTTP响应、添加信息头、生成HTTP实体、确保实体被消耗及设置HTTP代理等关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. maven基础依赖

    org.apache.httpcomponents
    httpclient
    x.x.x

  2. HttpClient 的基本用法
    // 初始化httpclient
    CloseableHttpClient httpclient = HttpClients.createDefault();
    // 简单生成get请求
    HttpGet httpget = new HttpGet(“http://localhost/”);
    // 存放返回内容的类
    CloseableHttpResponse response = httpclient.execute(httpget);

    try{
    <…>
    } finally{
    response.close();
    }

  3. 生成 HTTP 请求
    方法一:
    HttpGet httpGet = new HttpGet(“http://www.google.com/search?hl=en&q=httpclient&btnG=Google+Search&aq=f&oq=”);

    方法二:
    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);

  4. 构建 HTTP 响应
    HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, “OK”);

    System.out.println(response.getProtocolVersiong());
    System.out.println(response.getStatusLine().getStatusCode());
    System.out.println(response.getStatusLine().getReasonPhrase());
    System.out.println(response.getStatusLine().toString());

  5. 添加信息头
    HttpResponse response = new BasicHttpResponse(HttpVersiong.HTTP_1_1, HttpStatus.SC_OK, “OK”);
    response.addHeader(“Set-Cookie”, “cl=a; path=/; domain=localhost”);
    response.addHeader(“Set-Cookie”, “cl=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);

  6. 生成 HTTP 实体
    5.0 默认 HttpEntity entity1 = response1.getEntity();
    4.5版本
    string类型的实体
    StringEntity myEntity = new StringEntity(“important message”,
    ContentType.create(“text/plain”, “UTF-8”));

    System.out.println(myEntity.getContentType());
    System.out.println(myEntity.getContentLength());
    System.out.println(EntityUtils.toString(myEntity));
    System.out.println(EntityUtils.toByteArray(myEntity).length);

    file类型的实体
    File file = new File(“somefile.txt”);
    FileEntity entity = new FileEntity(file, ContentType.create(“text/plain”, “UTF-8”));

    HttpPost httppost = new HttpPost(“http://localhost/action.do”);
    httppost.setEntity(entity);

    表单类型的实体
    List formparams = new ArrayList();
    formparams.add(new BasicNameValuePair(“param1”, “value1”));
    formparams.add(new BasicNameValuePair(“param2”, “value2”));
    UrlEncodedFormEntity entity = new UrlEncodeFormEntity(formparams, Consts.UTF-8);
    HttpPost httppost = new HttpPost(“http://localhost/handler.do”);
    httppost.setEntity(entity);

  7. 确保 HTTP 实体被消耗
    EntityUtils.consume(entity1)

  8. HTTP代理
    方式一:
    HttpHost proxy = new HttpHost(“someproxy”, 8080);
    DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
    CloseableHttpClient httpclient = HttpClients.custom()
    .setRoutePlanner(routePlanner)
    .build();
    方式二:
    SystemDefaultRoutePlanner routePlanner = new SystemDefaultRoutePlanner(ProxySelector.getDefault());
    CloseableHttpClient httpclient = HttpClients.custom()
    .setRoutePlanner(routePlanner)
    .build();
    方式三:
    HttpRoutePlanner routePlanner = new HttpRoutePlanner(){
    public HttpRoute determineRoute(
    HttpHost target,
    HttpRequest request,
    HttpContext context ) throws HttpException {
    return new HttRoute(target, null, new HttpHost(“someproxy”, 8080), “https”.equalsIgnoreCase(target.getSchemeName()));
    }
    };

    CloseableHttpClient httpclient = HttpClients.custom()
    .setRoutePlanner(routePlanner)
    .build();
    }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值