Android HTTP实例 发送请求和接收响应

Android Http连接 实例:发送请求和接收响应

添加权限

  首先要在manifest中加上访问网络的权限:

<manifest ... >    <uses-permission android:name="android.permission.INTERNET" />    ...</manifest>

  完整的Manifest文件如下:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.httpdemo1"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="17" />        <uses-permission android:name="android.permission.INTERNET" />         <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.example.httpdemo1.HttpDemo1Activity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

布局代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".HttpDemo1Activity" >    <TextView        android:id="@+id/myWebTitle"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="" />    <Button        android:id="@+id/requestBtn"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:text="Send Request" />    <WebView        android:id="@+id/webview"        android:layout_width="fill_parent"        android:layout_height="match_parent"        android:layout_above="@id/requestBtn"        android:layout_below="@id/myWebTitle" /></RelativeLayout>
activity_http_demo1.xml

主要的代码:  

package com.example.httpdemo1;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.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import android.os.Bundle;import android.app.Activity;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebView;import android.widget.Button;public class HttpDemo1Activity extends Activity{    private Button mSendReqBtn = null;// 发送请求的按钮    private WebView mWebView = null;// 用于显示结果,用载入html字符串的方式显示响应结果,而不是使用WebView自己的方式加载URL    // 响应    private HttpResponse mHttpResponse = null;    // 实体    private HttpEntity mHttpEntity = null;    @Override    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_http_demo1);        mSendReqBtn = (Button) findViewById(R.id.requestBtn);        mSendReqBtn.setOnClickListener(mSendClickListener);        mWebView = (WebView) findViewById(R.id.webview);    }    private OnClickListener mSendClickListener = new OnClickListener()    {        @Override        public void onClick(View v)        {            // 生成一个请求对象            HttpGet httpGet = new HttpGet("http://www.baidu.com/");            // 生成一个Http客户端对象            HttpClient httpClient = new DefaultHttpClient();            // 下面使用Http客户端发送请求,并获取响应内容            InputStream inputStream = null;            try            {                // 发送请求并获得响应对象                mHttpResponse = httpClient.execute(httpGet);                // 获得响应的消息实体                mHttpEntity = mHttpResponse.getEntity();                // 获取一个输入流                inputStream = mHttpEntity.getContent();                BufferedReader bufferedReader = new BufferedReader(                        new InputStreamReader(inputStream));                String result = "";                String line = "";                while (null != (line = bufferedReader.readLine()))                {                    result += line;                }                // 将结果打印出来,可以在LogCat查看                System.out.println(result);                // 将内容载入WebView显示                mWebView.getSettings().setDefaultTextEncodingName("UTF-8");                // 直接使用mWebView.loadData(result, "text/html", "utf-8");会显示找不到网页                // 换成下面的方式可以正常显示(但是比较宽,拖动可见百度logo)                mWebView.loadDataWithBaseURL(null, result, "text/html",                        "utf-8", null);                                // 直接载入URL也可以显示页面(但是此例子主要是为了验证响应返回的字符串是否正确,所以不用下面这行代码)                // mWebView.loadUrl("http://www.baidu.com/");            }            catch (Exception e)            {                e.printStackTrace();            }            finally            {                try                {                    inputStream.close();                }                catch (IOException e)                {                    e.printStackTrace();                }            }        }    };}

  程序运行结果如下:

参考资料

  Android开发视频教程HTTP操作。——http://www.marsdroid.org

  Android Reference: package org.apache.http:

  http://developer.android.com/reference/org/apache/http/package-summary.html

更多相关文章

  1. android EditText 全面阐述
  2. Android(安卓)EditView属性
  3. Android系统自带样式(android:theme)
  4. Android开发EditText属性
  5. Android(安卓)TextView内容过长加省略号,点击显示全部内容
  6. Android:EditText 多行显示、属性汇总、族谱
  7. Android(安卓)UI设计——EditText控件
  8. Android图表控件MPAndroidChart——曲线图+柱状图 CombinedChart
  9. Android(安卓)ProgressBar进度条

随机推荐

  1. React Native Android 独有组件之 TimePi
  2. Android 自定义View 使用VelocityTracker
  3. android中使用properties文件配置
  4. Android Studio 本地化配置gradle的build
  5. AndEngine引擎学习之环境配置以及示例修
  6. 蓝牙BLE开发基础教程 android5.0 蓝牙4.0
  7. android 按钮倒计时读秒
  8. Android 浅谈相机研发
  9. 加速 Android 依赖下载
  10. Android 对话框(Dialog)【大全】