`

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上传文件。可以选择要上传文件的路径,上传网址

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

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

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

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

    Android实验七.doc

    Apache、socket、URLConnection、httpConnection。 2. 常用的数据传输格式有哪两种? JSON、XML。 3. Android网络编程必须申请的权限是? <uses-permission android:name="andriod.permission.INTERNET...

    Android文件断点下载

    Android文件断点下载,使用HttpConnection

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

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

    android_downloader

    安卓下载工具工程代码,使用HttpConnection,不是使用系统自带的DownloadManager,方便监听下载状态。使用handler发送进度、异常消息。

    安卓android课程设计报告.docx

    产品范围 手机,平板电脑,MP4,导航仪,上网本,电纸书等使用安卓系统的数码领域 综合描述 安卓android课程设计报告全文共5页,当前为第2页。产品的状况 安卓android课程设计报告全文共5页,当前为第2页。 Android...

    license文件

    at com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:191) at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:80) at ...

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

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

    安卓android课程设计分析报告.doc

    AndroidSDK和Eclipse的ADT插件是必须使用的。 软件支持高效、快速的数据存储方式,包括快速数据存储方式SharedPreferences、文件 存储和轻量级关系数据块SQLite,可软件可以使用适合的方法对数据进行进程保存和访 ...

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

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

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

    Httpconnection ——本人常用 OKHTTP——看见过(需要在依赖中引入包) HttpClient——过气的方法(弃用) HTTPCONNECTION 由于网络连接是耗时操作不能在UI线程操作,一般通过Handler获取子线程中获取的数据 ...

    Android-Project:Android 项目存储库

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

    NearbyPlace

    1.DataParser(获取所有附近的地点数据并在其坐标上放置标记)2.HttpConnection(使用HttpURLConection获取URL数据)3.MapsActivity(主要活动) 如何连接?确保将项目连接到google API,并在console.developers....

    java8源码-QuantaAndroidStu2020:多线程和网络请求直播课源代码

    java8 源码 QuantaAndroidStu2020/02/23 ...httpconnection 2.okhttp使用 (应用进行网络操作需申请权限,Android P之后无法直接访问非加密http连接,这里建议用真机或是android8.0及以下版本的模拟

    java-practices:Java实践代码库

    Java和Java 8核心概念 ... 使用HttpConnection API进行联网的Android本机代码(不适用于Volley,Retrofit等库,并尽可能避免使用OkHttpClient) :使用HttpClient和ftp方法进行Rest调用。 其他-Java概念测验: :

Global site tag (gtag.js) - Google Analytics