1、Android 上发送HTTP 请求的方式一般有两种,HttpURLConnection 和 HttpClient;

2、HttpURLConnection 的用法:

  1)获取 HttpURLConnection 实例:通过调用 URL 对象的 openConnection() 方法获取;

  2)设置 HTTP 请求所使用的方法,常用的有两个方法: GET 和 POST;

  3)其他设置,比如设置连接超时、读取超时的毫秒数等;

connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);

  4)调用 HttpURLConnection 的 getInputStream() 方法可以获取到服务器返回的输入流,通过这个输入流就可以读取到服务端数据;

  5)最后需要调用 disconnect() 方法来关闭连接。

  6)示例代码:

private String sendRequestWithHttpURLConnection(){
String result = null;
HttpURLConnection connection = null;
try{
URL url = new URL("http://www.baidu.com");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
InputStream inputStream = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder sb = new StringBuilder();
String str;
while((str = br.readLine()) != null){
sb.append(str);
}
result = sb.toString();
}catch (Exception e){
e.printStackTrace();
}finally{
if(connection != null){
connection.disconnect();
}
}
return result;
}

3、HttpClient 的用法:

  1)HttpClient 是一个接口,通常情况下会创建一个 DefaultHttpClient 的实例:HttpClient httpClient = new DefaultHttpClient();

  2)设置请求:

    --GET 请求:创建一个 HttpGet 对象,并传入目标的网络地址,然后调用 HttpClient 的 execute() 方法即可;

    --POST请求:创建一个 HttpPost 对象,并传入目标的网络地址;创建一个 NameValuePair 集合来存放待提交的参数,并将这个参数集合传入到一个UrlEncodedFormEntity 中,然后调用 HttpPost 的 setEntity() 方法将构建好的 UrlEncodedFormEntity传入:

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", "admin"));
params.add(new BasicNameValuePair("password", "123456"));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");
httpPost.setEntity(entity);

  3)调用 HttpClient 的 execute() 方法发起请求;

  4)执行 execute() 方法之后会返回一个 HttpResponse,对象服务器所返回的所有信息就会包含在这里面,通常情况先取出服务器返回的状态码,如果等于200 就说明请求和响应都成功了,此时可以调用 getEntity() 方法获取到一个HttpEntity 实例,然后再用 EntityUtils.toString() 这个静态方法将 HttpEntity 转换成字符串;

  5)示例代码:

private String sendRequestWithHttpClient(String name, String pwd){
String result = null;
HttpClient httpClient = null;
try {
httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.baidu.com"); List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", name));
params.add(new BasicNameValuePair("pwd", pwd));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
post.setEntity(entity); HttpResponse response = httpClient.execute(post);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity1 = response.getEntity();
result = EntityUtils.toString(entity1, "UTF-8");
}
}catch (Exception e){
e.printStackTrace();
}
return result;
}

Android--网络请求的更多相关文章

  1. Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

    最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...

  2. xamarin android网络请求总结

    xamarin android中网络请求的框架非常多,在项目中使用的是第三方的一个网络请求框架restsharp,应该是github上.net网络请求最多star的框架,没有之一.这里就简单汇总了其他 ...

  3. Android 网络请求框架Retrofit

    Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...

  4. Android 网络请求及数据处理

    Android 网络请求: 1.Volley   http://blog.csdn.net/t12x3456/article/details/9221611 2.Android-Async-Http  ...

  5. Android 网络请求Retrofit + RxJava

    一.背景 经常看到项目用Retrofit+RxJava+RxAndroid的框架,为了看懂项目的结构.现在来了解一下,Retrofit: Retrofit是Square 公司开发的一款正对Androi ...

  6. android 网络请求Ⅰ

    本章讲述在android开发中,常用的网络请求操作.网络请求利用android基本的HttpURLConnection连接URL和开源网络请求包AsyncHttpClient.本次网络请求以调取天气接 ...

  7. Android网络请求通信之Volley

    一.Volley简介 Volley网络框架是Google公司在2013年发布的一款Android平台上的网络请求通信库.以下是对Volley的简单归纳. Volley的优点: 使网络通信更快.更简单. ...

  8. android 网络请求库的比较

    源码请戳 一. 现有库和选择的库 HttpURLConnection:是Java中的标准类,是对Java中socket的封装. Httpclient:是Apache的开源框架,是对HttpURLCon ...

  9. 浅论Android网络请求库——android-async-http

    在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Insta ...

  10. Android网络请求框架

    本篇主要介绍一下Android中经常用到的网络请求框架: 客户端网络请求,就是客户端发起网络请求,经过网络框架的特殊处理,让后将请求发送的服务器,服务器根据 请求的参数,返回客户端需要的数据,经过网络 ...

随机推荐

  1. Unity3D中制作Loading场景进度条

    背景 通常游戏的主场景包含的资源较多,这会导致加载场景的时间较长.为了避免这个问题,可以首先加载Loading场景,然后再通过Loading场景来加载主场景.由于Loading场景包含的资源较少,所以 ...

  2. eclipse- Web-app verson=2.5 调整将Dynamic Web Module3.0降为2.5

    如果提示cannot change version of project facet Dynamic Web Module to 2.5 1.把Dynamic Web Module复选框,勾选去掉,点 ...

  3. 初涉定制linux系统之——自动化安装Centos系统镜像制作

    最近碰到个需求:要在内网环境安装centos6.5系统并搭建服务,但由于自动部署脚本里安装依赖包使用的是yum安装,而服务器无法连接外网,实施人员也不会本地yum源搭建O__O "….. 本 ...

  4. 用.net访问电子枢纽信用中心的数据查询服务

    概要说明 电子枢纽全称国家交通运输物流公共信息平台,主要提供物流及生产企业进行物流相关数据交换的标准和API,详细介绍可参考其官网www.logink.org,本文假定阅读者对该平台已有了解,并已成功 ...

  5. Spring Framework 笔记(一):IoC

    一:Spring中重要的概念 1. 容器( container ) : spring容器( ApplicationContext )的工作原则是创建容器中的组件( instance ),处理组件之间的 ...

  6. js代码学习

    运算符: 复杂运算符:Math.pow(2,53)   //=>9007192145641435:2的53次幂 Math.round(.6)  //=>1.0:四舍五入 Math.ceil ...

  7. [转]Snappy压缩库安装和使用之一

    Snappy压缩库安装和使用之一 原文地址:http://blog.csdn.net/luo6620378xu/article/details/8521223 近日需要在毕业设计中引入一个压缩库,要求 ...

  8. listbox 报错 Cannot have multiple items selected when the SelectionMode is Single.

    1.错误提示:Cannot have multiple items selected when the SelectionMode is Single. 刚刚在处理两个Listbox时,将其中一个li ...

  9. 解决Nginx不支持pathinfo的问题

    server { listen 80; server_name www.zq27.cc zq27.cc; root /data/wwwroot/www.zq27.cc/; access_log off ...

  10. 写了一个基于React+Redux的仿Github进度条

    曾经实现过Angular版,这次感觉用了高大上的React却写了更多的代码,需要的配置也更多了,有利有弊吧. 但这个“导航条问题”很有意思,涉及到在Redux中写timer,其实我很困惑,到底如何完美 ...