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

时间: 2024-10-05 10:09:51

Android HTTP发送请求和接收响应的实例代码的相关文章

Android HTTP发送请求和接收响应的实例代码_Android

添加权限 首先要在manifest中加上访问网络的权限: 复制代码 代码如下: <manifest ... > <uses-permission android:name="android.permission.INTERNET" /> ... </manifest> 完整的Manifest文件如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?>

Android利用ZXing扫描二维码的实例代码解析_Android

相关阅读: Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题 此项目源码地址:请点击这里 看一下zxing的项目结构,我这里直接拿过来用的   看一下扫码的activity: package com.fanyafeng.barcode.activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bund

Android 仿今日头条简单的刷新效果实例代码_Android

点击按钮,先自动进行下拉刷新,也可以手动刷新,刷新完后,最后就多一行数据.有四个选项卡. 前两天导师要求做一个给本科学生预定机房座位的app,出发点来自这里.做着做着遇到很多问题,都解决了.这个效果感觉还不错,整理一下. MainActivity package com.example.fragmentmytest; import android.content.DialogInterface; import android.graphics.Color; import android.os.B

Android利用ZXing扫描二维码的实例代码解析

相关阅读: Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题 此项目源码地址:请点击这里 看一下zxing的项目结构,我这里直接拿过来用的 看一下扫码的activity: package com.fanyafeng.barcode.activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle

Android 仿今日头条简单的刷新效果实例代码

点击按钮,先自动进行下拉刷新,也可以手动刷新,刷新完后,最后就多一行数据.有四个选项卡. 前两天导师要求做一个给本科学生预定机房座位的app,出发点来自这里.做着做着遇到很多问题,都解决了.这个效果感觉还不错,整理一下. MainActivity package com.example.fragmentmytest; import android.content.DialogInterface; import android.graphics.Color; import android.os.B

Android 监听屏幕是否锁屏的实例代码

今天,简单讲讲如何监听手机屏幕是否锁屏. 实现方法: 1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可以判断屏幕状态是否锁屏,但是只有屏幕状态发生改变时才会发出广播: 2)如果要在屏幕状态发生改变之前就想获取屏幕状态,可以通过反射机制调用PowerManager的isScreenOn方法 . 具体实现,见代码: 直接上代码: 1.定义一个接收广播的类 package com.app.lib; im

Android 中TabLayout自定义选择背景滑块的实例代码_Android

 TabLayout是Android 的Material Design包中的一个控件,可以和V4包中的ViewPager搭配产生一个联动的效果.这里我自定义了一个滑块能够跟随TabLayout进行滑动选择的SliderLayout.效果见下图(白色方框): 下面是SliderLayout的源码: import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawab

node-http-proxy修改响应结果实例代码_javascript技巧

最近在项目中使用node-http-proxy遇到需要修改代理服务器响应结果需求,该库已提供修改响应格式为html的方案:Harmon,而项目中返回格式统一为json,使用它感觉太笨重了,所以自己写了个可解析和修改json格式的库, 期间也遇到了之前未关注的问题:http传输编码.node流的相关处理.下面是实现代码: var zlib = require('zlib'); var concatStream = require('concat-stream'); /** * Modify the

Android获取应用程序大小和缓存的实例代码_Android

info package com.qin.appsize; import android.content.Intent; import android.graphics.drawable.Drawable; //Model类 ,用来存储应用程序信息 public class AppInfo { private String appLabel; //应用程序标签 private Drawable appIcon ; //应用程序图像 private Intent intent ; //启动应用程序