Android--网络请求

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;
}
时间: 2024-08-13 03:00:16

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

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

最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所帮助. 首先按照惯例先来简单了解一些AsyncHttpClient网络框架的一些知识. 1.简介 Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-a

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的

【Java&amp;Android开源库代码剖析】のandroid-async-http(如何设计一个优雅的Android网络请求框架,同时支持同步和异步请求)开篇

在<[Java&Android开源库代码剖析]のandroid-smart-image-view>一文中我们提到了android-async-http这个开源库,本文正式开篇来详细介绍这个库的实现,同时结合源码探讨如何设计一个优雅的Android网络请求框架.做过一段时间Android开发的同学应该对这个库不陌生,因为它对Apache的HttpClient API的封装使得开发者可以简洁优雅的实现网络请求和响应,并且同时支持同步和异步请求. 网络请求框架一般至少需要具备如下几个组件:1

Android 网络请求及数据处理

Android 网络请求: 1.Volley   http://blog.csdn.net/t12x3456/article/details/9221611 2.Android-Async-Http   http://www.cnblogs.com/angeldevil/p/3729808.html Android Json 处理: 1.Gson 2.fast-json

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

浅论Android网络请求库——android-async-http Android应用中使用AsyncHttpClient来异步网络数据

android网络请求库volley方法详解

使用volley进行网络请求:需先将volley包导入androidstudio中 File下的Project Structrue,点加号导包 volley网络请求步骤: 1. 创建请求队列       RequestQueue queue = Volley.newRequestQueue(this); 2.创建请求对象(3种) StringRequest request = new StringRequest(“请求方法”,“请求的网络地址”,“成功的网络回调”,“失败的网络回调”): Ima

Android进阶笔记01:Android 网络请求库的比较及实战(一)

在实际开发中,有的时候需要频繁的网络请求,而网络请求的方式很多,最常见的也就那么几个.本篇文章对常见的网络请求库进行一个总结. 一.使用HttpUrlConnection: 1. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android2.3以后使用HttpUrlConnection,之前使用HttpCl

Volley网络请求框架简析——Android网络请求框架(三)

题记-- 人来到这个世界上,只有两件事情,生与死, 一件事完了,另一件事还急什么? 有缘而来,无缘而去, 识自本心,见自本性 不起妄缘,无心无为 自由自在,动静自如 冷暖自知,则是修行 1.初始化一个消息请求队列以及网络请求工具类对象 /** * Created by androidlongs on 16/7/1. * 网络请求访问框架 */ public class VollyRequestUtils { /** * Volley框架使用工具类对象 */ private static Voll

Android 网络请求方法

在Android应用开发中,我们经常会与服务器交互,获取或上传数据,这就需要用到网络请求,一般情况下是使用HTTP协议去发送和接收网络数据,而HTTP又包括两种通信方式,即:HttpUrlConnection和HttpClient. 代码例子:https://git.oschina.net/ysx_xx/HttpText/tree/master 下面我简单地介绍这两种方式的使用: 首先,要进行网络请求,我们要先给应用添加网络权限,有两种方式添加: 1.    打开AndroidManifest.

android 网络请求库的比较

源码请戳 一. 现有库和选择的库 HttpURLConnection:是Java中的标准类,是对Java中socket的封装. Httpclient:是Apache的开源框架,是对HttpURLConnection的封装. Okhttp:是Square公司开发的开源网络访问框架,是对socket的封装. 综上,Okhttp是目前比较适合的网络框架,根据业务需求进行适当的封装能够很好的适用于我们的需求.另外,该框架现在已经被广泛使用,比如著名的公司Facebook,他们在自己的Android客户端