Android SDK 支持两种直接访问HTTP资源的方式:DefaultHttpClient 和 HttpURLConnection 。这两种方式都封装了HTTP请求。其中DefaultHttpClient 通过HttpGet 和 HttpPost 分别封装了GET 和 POST 请求。HttpURLConnection 通过URL的构造方法制定HTTP资源地址,然后通过URL.openConnection来获取HttpURLConnection对象。除此之外,可以用 客户端Socket发送HTTP请求。
本文主要介绍DefaultHttpClient。
DefaultHttpClient 类以默认的请求属性创建一个HttpClient,该类所在的包:org.apache.http.impl.client.DefaultHttpClient. HttpClient是个很不错的开源框架,封装了访问http的请求头、参数、内容体、响应等。
使用步骤:
1、创建Http 客户端对象
2、创建请求对象
如果是post,且有上传参数,调用HttpPost的setEntity来设置请求实体
3、执行请求获得响应对象
4、判断状态吗是否等于200
5、如果状态吗等于200,从响应对象中获取响应实体
// 1、创建HttpPost或者HttpGet对象 HttpPost httpPost = new HttpPost( "http://192.168.1.1/login.asp"); // HttpGet httpGet = new // HttpGet("http://192.168.1.1/login.asp"); // 2、设置POST请求 必须用NameValuePair对象 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("bookname", "笑傲江湖")); // UrlEncodedFromEntity类中封装了一个List集合,该集合元素是NameValuePair类,用于向服务器发送或从服务器接收数据。 UrlEncodedFormEntity entity = new UrlEncodedFormEntity( params, HTTP.UTF_8); // 3、设置POST请求的参数 httpPost.setEntity(entity); // 4、用execute 方法发送POST请求,并返回HttpResponse对象 HttpResponse httpResponse = new DefaultHttpClient() .execute(httpPost); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // EntityUtils类是专门用于处理HttpEntity的帮助类,这里是获得返回结果 String result = EntityUtils .toString(httpResponse.getEntity()); Log.i("TAG", result);// 输出服务器返回来的数据。 }
注意:Android4.0后,联网操作必须是异步的,不能在UI线程中进行,否则会抛异常。
android.os.NetworkOnMainThreadException
参考:李宁老师的《Android高薪之路》
http://www.cnblogs.com/devinzhang/archive/2012/01/17/2325092.html
相关推荐
DefaultHttpClient绕过安全认证访 DefaultHttpClient 请求绕过 https 实例
new Thread(new Runnable() { public void run() { // TODO Auto-generated method stub try { //设置连接超时 ... DefaultHttpClient httpclient = new DefaultHttpClient( httpParameters);
NULL 博文链接:https://username2.iteye.com/blog/1664995
练习HttpClient的一个Demo
本实例描述了Android平台下使用Apache开源项目的HttpClient访问网络的示例。分别使用HttpClient下的两个子实现类,DefaultHttpClient和AndroidHttpClient分别进行演示。
HttpResponse httpResponse = new DefaultHttpClient().execute(httpGetRequest); if(httpResponse.getStatusLine().getStatusCode()==200){//连接成功 String result = EntityUtils.toString...
android http 保持连接 1.服务器端就直接用servlet,就有session呀! 2.要是做客服端,有怎么又浏览器?做客服端的话:服务器端发送数据不能是用http协议用response.getWrite()写出去建议用json,客服端接收时你可以...
android HTTPdemo,分别用HttpURLConnection类,和DefaultHttpClient类 实现了 POST、GET方法
《 httpClient及android 原生接口实现下载并显示图片》博客对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/17609771
做了一个android网络应用,要求用自己实现的webview去访问web网站,并且在远程登录成功之后把cookie写入到手机,保留用作以后的自动登录。找了好多资料。发觉读取cookies倒还用的很普遍,可是通过程序写cookie却没有...
import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.CoreConnectionPNames; import org.apache....
该过程分为三个步骤: 获取所需主机的证书确保证书为 .bks 格式将证书固定到DefaultHttpClient的实例获取站点的 .pem 证书一种方法是从 Firefox 浏览器。 描述该方法。 这将存储主机的整个证书链,这是推荐的方法。...
今天想把一个用使用了HttpClient的自动签到小程序移植到Android上,还好Android的SDK自带了HttpClient的包.当然也可以继续使用DefaultHttpClient,但用为Android定制的AndroidHttpClient自然更好
httpclient过时用的jar包 , 解决项目升级后httpclient过时程序报错
直接讲用法,先知道怎么用,再知道怎么回事 1、HttpPost 代码如下: try{ //创建连接 HttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost(url); //设置参数,仿html表单提交 List...
代码如下: public class HttpUtil { public static String ...获取到一个浏览器 HttpClient client = new DefaultHttpClient(); //2.准备请求的地址 try { String arg1 = URLEncoder.encode(name
java代码 代码如下: private void startUrlCheck(String username,String password) { HttpClient client = new DefaultHttpClient(); StringBuilder builder = new StringBuilder(); HttpGet myget = new Ht
今天,写了个小代码。...HttpClient httpClient = new DefaultHttpClient(); //创建一个HttpClient HttpGet httpGet = new HttpGet(“http://www.csdn.net/”); //创建一个GET请求 HttpResponse respons
代码如下: import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpResponse; import org.apache.... import org.apache.http.impl.client.DefaultHttpClient; import org.
DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); JSONObject response = null; try { StringEntity s = new StringEntity(json.toString()); s.setContentEncoding...