httpclient使用实例

本文介绍如何使用Java的HttpClient库实现网站登录与数据查询功能,包括设置代理服务器、发送带参数的POST请求及处理响应数据。

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

  1. import java.io.ByteArrayOutputStream;
  2. import java.io.InputStream;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import org.apache.http.HttpEntity;
  6. import org.apache.http.HttpHost;
  7. import org.apache.http.HttpResponse;
  8. import org.apache.http.NameValuePair;
  9. import org.apache.http.client.HttpClient;
  10. import org.apache.http.client.entity.UrlEncodedFormEntity;
  11. import org.apache.http.client.methods.HttpPost;
  12. import org.apache.http.impl.client.DefaultHttpClient;
  13. import org.apache.http.message.BasicNameValuePair;
  14. import org.apache.http.protocol.HTTP;
  15. public class Httpclient {
  16.      public final static void main(String[] args) throws Exception {
  17.             DefaultHttpClient httpclient = new DefaultHttpClient();
  18.            //设置代理服务器
  19.             final HttpHost proxy =new HttpHost("172.131.2.46"8080"http");
  20.             httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
  21.             
  22.             HttpPost httpost = new HttpPost("http://127.0.0.1:8080/test/admin.do?method=logon"); 
  23.             //传递参数,本例中要输入用户名和密码才能进去
  24.             List <NameValuePair> nvps = new ArrayList <NameValuePair>();
  25.             nvps.add(new BasicNameValuePair("userName""admin"));
  26.             nvps.add(new BasicNameValuePair("password""admin"));
  27.             httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
  28.             HttpResponse response = httpclient.execute(httpost);
  29.                     
  30.             visitUrlOfSite(httpclient);
  31.             
  32.             // Do not feel like reading the response body
  33.             // Call abort on the request object
  34.             httpost.abort();
  35.         }
  36.      
  37.         /**
  38.          * inputStream转换byte数组
  39.          * @param input
  40.          * @return 流是从当前位置开始读取的
  41.          * @throws Exception
  42.          */
  43.         private static byte[] transformInputstream(InputStream input)throws Exception
  44.         {
  45.             byte[] byt= null;
  46.             ByteArrayOutputStream baos = new ByteArrayOutputStream();
  47.             int b=0;       
  48.             b = input.read();
  49.             while( b != -1)
  50.             {
  51.                 baos.write(b);
  52.                 b = input.read();            
  53.             }
  54.             byt = baos.toByteArray();
  55.             return byt;
  56.         }
  57.         
  58.         private static void visitUrlOfSite(HttpClient httpclient) throws Exception{
  59.                 HttpPost httpost = new HttpPost("http://127.0.0.1:8080/test/student/studentAction.do?method=query"); 
  60.                 HttpResponse response = httpclient.execute(httpost);
  61.                 HttpEntity entity = response.getEntity();
  62.                 System.out.println("----------------------------------------");
  63.                 System.out.println(response.getStatusLine());
  64.                 if (entity != null) {
  65.                     System.out.println("Response content length: " +new String(transformInputstream(entity.getContent()),"gb2312"));
  66.                 }
  67.                 System.out.println("----------------------------------------");
  68.                 if (entity != null) {
  69.                     entity.consumeContent();
  70.                 }
  71.                 httpost.abort();
  72.         
  73.         }
  74.         
  75. }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值