`

Android HttpConnection 使用

 
阅读更多

1,从Intent获取网页,发送请求,将网页以流的形式读回来。

1)创建一个URL对象:URL url = new URL("http://www.iteye.com");

2) 获取链接 :HttpURLConnection conn=(HttpURLConnection )url.openConnection();

3) 设置超时时间:conn.setConnectTimeout(6*1000);

4) 设置允许输入输出:conn.setDoInput(true);conn.setDoOutput(true);

5) 设置请求模式:conn.setRequestMethod("POST");//注意,要大写

6)设置读取超时:conn.setReadTimeout(true);

7)得到网络返回的输入输出流:InputStream/OutputStream ios = conn.getInputStream()/getOutputStream();

8)判断是否连接成功:conn.getResponseCode()!=200  throw new RuntimeException("请求url失败");

注意:

--在对大文件的操作时,要将文件写到SDCard上面,不要直接写到手机内存上.
--操作大文件是,要一遍从网络上读,一遍要往SDCard上面写,减少手机内存的使用.这点很重要,面试经常会被问到.
--对文件流操作完,要记得及时关闭.

public class HttpConnect {
	private boolean isCancel = false;
	public void setCancel(boolean isCancel) {
		this.isCancel = isCancel;
	}
	public byte[] open(String strUrl, String postData) {
		byte[] data = null;
		InputStream is = null;
		OutputStream os = null;
		ByteArrayOutputStream baos = null;
		HttpURLConnection conn = null;
		try {// 为了测试取消连接
				// Thread.sleep(5000);
				// http联网可以用httpClient或java.net.url
			URL url = new URL(strUrl);
			conn = (HttpURLConnection) url.openConnection();
			conn.setDoInput(true);
			conn.setDoOutput(true);
			conn.setConnectTimeout(1000 * 30);
			conn.setReadTimeout(1000 * 30);
			if (Tools.isNull(postData)) {
				conn.setRequestMethod("GET");
			} else {
				conn.setRequestMethod("POST");
				os = conn.getOutputStream();
				byte[] sendData = postData.getBytes();
				os.write(sendData);// 将post数据发出去
			}
			if (isCancel) {
				LogUtil.i("open", "已经取消掉了连接");
				return null;
			}
			int responseCode = conn.getResponseCode();
			if (responseCode == 200) {
				is = conn.getInputStream();
				baos = new ByteArrayOutputStream();
				byte[] buffer = new byte[1024 * 8];
				int size = 0;
				while ((size = is.read(buffer)) >= 1) {
					baos.write(buffer, 0, size);
				}
				data = baos.toByteArray();
			}

		} catch (Exception e) {
			ExceptionUtil.handle(e);
		} finally {
			try {
				if (is != null) {is.close();}
				if (os != null) {os.close();}
				if (baos != null) {baos.close();}
				conn = null;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		if (isCancel) {
			LogUtil.i("open", "已经取消掉了连接");
			return null;
		}
		return data;
	}

}

 

参考链接:http://li-bonan.blog.163.com/blog/static/1355647702011101415058190/

分享到:
评论
1 楼 X_Lucky 2015-12-05  

相关推荐

    android httpconnection上传文件

    在Android开发中,HTTPConnection是Java的标准库提供的一种网络通信方式,可以用于实现文件的上传。这个过程涉及到了网络编程、文件操作以及多线程等关键知识点。下面将详细讲解如何在Android应用中使用...

    android HttpURLConnection上传图片demo

    这个"android HttpURLConnection上传图片demo"提供了一个具体的示例,教我们如何使用HttpURLConnection来完成这一任务。HttpURLConnection是Java标准库中的一个类,它允许Android应用程序与HTTP服务器进行通信,执行...

    Android用HttpConnection访问网络时实现类似浏览器自动保持上一次会话的功能

    在Android应用开发中,使用HttpURLConnection访问网络时,有时候我们需要实现类似浏览器的自动保持会话功能,以便在用户登录后,后续的网络请求能够自动携带上登录状态,无需每次都重新登录。这种功能在处理需要持久...

    Android用HttpConnection访问http网络时实现类似浏览器自动保持上一次会话的功能

    细心的开发者可能会发现,在用浏览器访问http时一般都会自动保持同一个会话,而用代码访问http连接时则每一次访问都会新建一个会话,那么我趁着这几天休假就把之前从网上资料中整理出的一个demo分享出来,实现安卓...

    j2me移植Android引擎

    5. **网络通信**:J2ME的HttpConnection在Android中可以被HttpURLConnection或OkHttp替代。 6. **存储数据**:J2ME的RecordStore对应Android的SQLite数据库或SharedPreferences。 7. **线程管理**:J2ME的线程模型...

    安卓android课程设计报告.pdf

    1. 产品的状况:Android 是一种以 Linux 为基础的开放源代码操作系统,主要使用于便携设备。我们开发的相关项目正是一个在安卓平台上开发的软件,可以用这个软件来实现用户在一些简单的手持设备如手机或者平板电脑等...

    Basic4android 教程

    通过B4A,你可以使用HttpConnection类进行HTTP请求,获取网页数据;或者使用WebSocket进行实时通信。对于JSON和XML数据,B4A提供了便捷的解析库。 七、第三方库集成 B4A允许导入aar或jar文件,这样你可以利用已有的...

    客户端与服务器端通信示例代码(基于HttpURlConnection实现)

    本例演示最简单的android客户端和服务器端通信,客户端使用android4.0以上版本,服务器端为dynamic web project工程,使用时将client代码中的ip地址改为自己电脑的ipv4地址,同时保证手机和电脑处于同一网络下(内网...

    Android网络开发详解

    ### Android网络开发详解 #### 一、概要 在Android平台上进行网络开发是移动应用开发中的重要组成部分。本文将深入探讨Android平台上的...了解并掌握这些接口的使用方法,对于开发高质量的Android应用程序至关重要。

    基于Android的老年人智慧服务APP的开发设计.pdf

    健康监测模块通过使用百度地图Android SDK,调用LocationClientOption类设置坐标类型,LocationClientOption类启动GPS,采用BDlocation类获取精确的位置坐标,实现定位功能、求救信息反馈和摔倒检测。 摔倒检测功能...

    Android Http协议访问网络实例(3种)

    HttpConnection的使用需要注意的是,网络连接是耗时操作,不能在UI线程中进行,需要使用Handler或AsyncTask来实现异步请求。例如: ```java Handler mHandler = new Handler(){ @Override public void ...

    安卓org.apache.http.legacy.jar包下载

    早期,Android系统支持使用Apache HTTP客户端库(HttpClient)进行网络请求,但在Android API Level 26(Android 8.0 Oreo)之后,该库被弃用,并在API Level 28(Android 9.0 Pie)中完全移除。这导致了许多依赖于...

    Android异常 java.lang.IllegalStateException解决方法

    Android异常详情介绍 这种异常我遇到以下两种情况: 1. java.lang.IllegalStateException: No wrapped connection. 2.java.lang.IllegalStateException: Adapter is detached. 原因: 1.单线程一次执行一个请求...

    安卓android课程设计报告.docx

    4. **硬件API库**:通过HTTP协议或Socket实现与服务器的交互,例如使用Java的HttpConnection或Apache的HttpClient,服务器端则需相应Servlet处理请求。 【系统功能需求】 1. **天气信息显示和获取**:设计用户界面...

    XCHttpClient:Android Http网络开发框架(非第三方)

    该框架是本人基于HttpConnection开发的一套 类似于android-async-http 和Volley那样的快速网络开发框架 支持同步,异步方式的请求; 支持GET,POST请求; 使用方法: 1、请求文本内容: String url =""; ...

    移动开发程序员安卓工程师简历模板

    3. **Android SDK与开发工具**:使用Eclipse 3.5作为开发工具,结合Android 2.1 SDK进行开发,意味着候选人熟悉旧版本的Android环境,可能也具备对新版本SDK的适应能力。 4. **JSON数据处理**:在“科学E无限”项目...

    安卓开发学习路线图.pdf

    - 掌握使用HttpClient、HttpConnection等进行网络请求。 - 了解如何使用Socket进行底层通信。 - 学习如何使用蓝牙、NFC、Wi-Fi进行设备间的通信。 7. 性能与电量优化: - 学习如何优化UI和应用的性能。 - 理解...

    Android-Project:Android 项目存储库

    安卓项目Android 项目存储库云聊天应用程序,具有使用 httpconnection、内容提供程序、服务、广播等的位置感知的对等和客户端服务器版本。由 Android Studio 开发。 观看 Chat Client with Location Awareness.swf ...

    Android设计模式系列之工厂方法模式

    `getConnection`方法作为一个静态工厂方法,根据传入的参数决定创建`HttpConnection`还是`HttpsConnection`,实现了对不同类型连接的动态创建。 工厂方法模式的效果主要体现在以下几个方面: 1. **创建型模式**:...

    org.apache.http包

    在Android早期版本中,这个包是系统默认的网络访问工具,但自API级别23(Marshmallow)开始,已被弃用,推荐使用Android的`java.net.HttpURLConnection`。然而,由于其灵活性和广泛的功能,许多开发者依然选择继续...

Global site tag (gtag.js) - Google Analytics