HttpClient的基础应用
HttpClient是用来发送HTTP请求的,也就是HTTP的客户端。任何HTTP请求都可以由它模拟出来。
?
1.发送GET请求:
HttpClient httpClient = new DefaultHttpClient(); // 初始化GET请求 HttpGet get = new HttpGet("http://localhost:8080"); // 执行GET请求 HttpResponse response = httpClient.execute(get); // 获取请求返回的数据HttpEntity entity = response.getEntity();if (entity != null) {entity = new BufferedHttpEntity(entity);InputStream in = entity.getContent();byte[] read = new byte[1024];byte[] all = new byte[0];int num;while ((num = in.read(read)) > 0) {byte[] temp = new byte[all.length + num];System.arraycopy(all, 0, temp, 0, all.length);System.arraycopy(read, 0, temp, all.length, num);all = temp;}System.out.println(new String(all));in.close();} // 一次GET请求结束get.abort();
?
2.发送POST请求
HttpClient httpClient = new DefaultHttpClient();HttpPost get = new HttpPost("http://localhost:8080/xxxxxx");//创建表单参数列表 List<NameValuePair> qparams = new ArrayList<NameValuePair>(); // 添加参数qparams.add(new BasicNameValuePair("id", "5"));//填充表单 get.setEntity(new UrlEncodedFormEntity(qparams,"UTF-8"));// 执行POST请求HttpResponse response = httpClient.execute(get);HttpEntity entity = response.getEntity();// ......// 接下来就与GET一样了
?
3.自己封装请求的输入流
HttpClient httpClient = new DefaultHttpClient();// 封装输入流ContentProducer cp = new ContentProducer() {public void writeTo(OutputStream outstream) throws IOException {Writer writer = new OutputStreamWriter(outstream, "UTF-8");writer.write("write the stream by myself");writer.flush();}};HttpEntity requestEntity = new EntityTemplate(cp);HttpPost httppost = new HttpPost("http://localhost:8080/xxx");httppost.setEntity(requestEntity);HttpResponse response = httpClient.execute(httppost);HttpEntity entity = response.getEntity();// 接下来与GET/POST一样了。