Apache包是对android联网访问封装的很好的一个包,也是android访问网络最常用的类。

下面分别讲一下怎么用HttpClient实现get,post请求。

1.Get 请求

HttpGet get = new HttpGet("http://www.baidu.com");

HttpClient hClient = new DefaultHttpClient();

httpResponse = hClient.execute(get);

  

2.Post 请求

Map<String, String> map = new HashMap<String, String>();
map.put("id", id);
map.put("name", name);
map.put("permission", String.valueOf(permission)); List<NameValuePair> list = new ArrayList<NameValuePair>();
if(map != null && !map.isEmpty()){
for(Map.Entry<String, String> entry : map.entrySet()){//迭代器
//键值对
NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue());
list.add(nameValuePair);
}
} UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list ,encode);
//使用post方式提交数据
HttpPost post = new HttpPost(path);
post.setEntity(entity);//请求体中
//默认客户端
HttpClient client = httpClient; HttpResponse httpResponse = client.execute(post);

  

3.代码实例:

先是get请求

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.DefaultHttpClientConnection;
import org.apache.http.impl.client.DefaultHttpClient; import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity { private Button requestButton;
private HttpResponse httpResponse;
private HttpEntity entity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestButton = (Button) findViewById(R.id.requestButton); requestButton.setOnClickListener(new OnClickListener() { public void onClick(View v) {
new Thread(new Downtest()).start();
}
});
}
class Downtest implements Runnable{ public void run() {
//生成一个请求对象,请求
HttpGet get = new HttpGet("http://www.baidu.com");
//生成一个Http客户端对象
HttpClient hClient = new DefaultHttpClient();
//使用Http客户端发送请求对象
InputStream inputStream = null;
try {
httpResponse = hClient.execute(get);//httpResponse返回的响应
//返回的响应数据就放在里边
entity = httpResponse.getEntity();
inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String result = "";
String line = "";
while((line = reader.readLine())!= null){
result = result+ line;
}
System.out.println(result);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try{
inputStream.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
} }

  再是post请求

public class AccountHttpUtils {  

    //private static String PATH = "http://192.168.253.1:8088/CallName/servlet/AccountServler";
private static HttpClient httpClient;
public AccountHttpUtils(HttpClient httpClient) {
this.httpClient = httpClient;
}
public static String sendHttpClient(String path,Map<String,String> map,String encode){
List<NameValuePair> list = new ArrayList<NameValuePair>();
if(map != null && !map.isEmpty()){
for(Map.Entry<String, String> entry : map.entrySet()){//迭代器
//键值对
NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue());
list.add(nameValuePair);
}
}
try {
//实现将请求的参数封装到表单中,
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list ,encode);
//使用post方式提交数据
HttpPost post = new HttpPost(path);
post.setEntity(entity);//请求体中
//默认客户端
HttpClient client = httpClient; HttpResponse httpResponse = client.execute(post);
if(httpResponse.getStatusLine().getStatusCode() == 200){
HttpEntity httpEntity = httpResponse.getEntity();
InputStream inputStream = httpEntity.getContent();
return changeInputeStream(inputStream, encode);
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return "";
}
/**
* 将一个输入流转换成字符串
* @param inputStream
* @param encode
* @return
*/
private static String changeInputeStream(InputStream inputStream,String encode) {
//通常叫做内存流,写在内存中的
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] data = new byte[1024];
int len = 0;
String result = "";
if(inputStream != null){
try {
while((len = inputStream.read(data))!=-1){
data.toString();
outputStream.write(data, 0, len);
}
//result是在服务器端设置的doPost函数中的
result = new String(outputStream.toByteArray(),encode);
outputStream.flush();
outputStream.close();
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
public static String set(String id,String name,int permission) {
// TODO Auto-generated method stub
Map<String, String> map = new HashMap<String, String>();
map.put("id", id);
map.put("name", name);
map.put("permission", String.valueOf(permission));
String result = AccountHttpUtils.sendHttpClient(AbstractHttpUtils.PATH+"servlet/AccountServler", map, "utf-8");
System.out.println("result:"+ result);
return result;
} }

  4.get请求访问的是百度,返回的是百度首页的源代码

post是我的一个小项目中的类

不过结构已经很清晰啦。。。。

留着备用。。。。。。

http://www.cnblogs.com/jycboy/p/httpclient.html

android之HttpClient的更多相关文章

  1. Android 采用HttpClient提交数据到服务器

    在前几篇文章中<Android 采用get方式提交数据到服务器><Android 采用post方式提交数据到服务器>介绍了android的两种提交数据到服务器的方法 本文继续介 ...

  2. android和httpClient

    一.说起来都是泪 各大组织不同步,可是我想用别人的库. 二.谷歌和阿帕奇的爱恨情仇 初,谷歌安卓新出,库中自带HttpClient 4.0测试预览版.为与安卓保持API同步,HTTPClient不敢大 ...

  3. [Android] HttpURLConnection & HttpClient & Socket

    Android的三种网络联接方式 1.标准Java接口:java.net.*提供相关的类//定义地址URL url = new URL("http://www.google.com" ...

  4. android通过HttpClient与服务器JSON交互

    通过昨天对HttpClient的学习,今天封装了HttpClient类 代码如下: package com.tp.soft.util; import java.io.BufferedReader; i ...

  5. android通过httpClient请求获取JSON数据并且解析

    使用.net创建一个ashx文件,并response.write  json格式 public void ProcessRequest(HttpContext context) { context.R ...

  6. Android 使用HttpClient方式提交POST请求

    final String username = usernameEditText.getText().toString().trim(); final String password = passwr ...

  7. Android 使用HttpClient方式提交GET请求

    public void httpClientGet(View view) { final String username = usernameEditText.getText().toString() ...

  8. Android采用HttpClient下载图片

    在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...

  9. Android使用HttpClient向服务器传输文件

    HttpClient是Apache Jakarta Common下的子项目,可以用来提供功能丰富的支持HTTP协议的客户端编程工具包,这几天写客户端的时候遇到个问题,“客户端需要向服务器发送Post请 ...

随机推荐

  1. 基于jQuery的一个简单的图片查看器

    项目中自己diy了一个图片查看器.因为初始代码不是自己的,只是在上面改了一下也没有弄的很漂亮.等以后有时间了在重写一下样式和封装,作为备用的只是积累吧.如果有童鞋有用到,完全可以在此基础上改,比较容易 ...

  2. 也说说TIME_WAIT状态

    也说说TIME_WAIT状态 一个朋友问到,自己用go写了一个简单的HTTP服务端程序,为什么压测的时候服务端会出现一段时间的TIME_WAIT超高的情况,导致压测的效果不好呢? 记得老王有两篇文章专 ...

  3. ASP.NET MVC WEB API必知必会知识点总结

    一.理解WEB API:提供基于RESTful架构的WEB服务,通过HTTP请求方法(GET, PUT, POST, DELETE)映射到服务器端相应的ACTION方法(CRUD). RESTful架 ...

  4. 【Swift学习】Swift编程之旅(二)

    在本节将介绍一些最基础的知识 swift提供自己版本的类型,下面说明几种简单的类型 Int 整型 Double和float 浮点型 String 字符串型 Bool 布尔型 它也提供了3种主要的强大的 ...

  5. 使用CSS3对链接颜色与下划线进行优化

    效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  6. a[href^=""]的解释

    a[href^="绝对路径"]这个算一种属性选择器,在这里是用来选择链接属性为“绝对路径”的a标签,其中的^其实是"以什么为开始"(begin with)的意思 ...

  7. VS自动生成的packages.config配置文件有什么用?

    通过nuget管理安装了程序包之后,Visual Studio会自动生成一个关于这些程序包版本的配置文件,删除或者保留它对程序不会造成什么影响.

  8. ASP.Net中防止页面刷新重复提交的几种方法

    [摘要] 目前很多网站都要提交页面插入或更新数据库,比如留言本,一个用户提交留言后,如果按F5,就会重新提交一遍留言,导致数据库出现两条一模一样的留言,本文介绍了几种防止页面刷新,导致重复提交数据的方 ...

  9. [Android] 环境配置之正式版Android Studio 1.0

    昨天看见 Android Studio 1.0 正式版本发布了:心里挺高兴的. 算是忠实用户了吧,从去年开发者大会一开始出现 AS 后就开始使用了:也是从那时开始就基本没有用过 Eclipse 了:一 ...

  10. visual C++ 项目和解决方案的区别

    项目:         项目是构成某个程序的全部组件的容器,该程序可能是控制台程序.基于窗口的程序或某种别的程序.程序通常由一个或多个包含用户代码的源文件,可能还要加上包含其它辅助数据的文件组成.某个 ...