赵雅智_Android_网络操作工具类

package com.cards.basic.util;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

import com.cards.commom.Common;

/**
 * @explaination 网络操作工具类
 * @author yazhizhao
 * @time 2014-7-7下午3:35:32
 */
public class HttpUtil {

	private static HttpUtil instance;
	private HttpURLConnection conn;
	private InputStream is;
	private OutputStream os;

	public static HttpUtil getInstance(Context context) {
		if (instance == null) {
			instance = new HttpUtil(context);
		}
		return instance;
	}

	private final static int TIMEOUT = 30 * 1000;

	/**
	 * 日志工具标签
	 */
	private static String tag = "HttpUtil";
	/**
	 * 上下文环境
	 */
	private Context context;

	/**
	 * 构造方法
	 *
	 * @param context
	 *            上下文环境
	 */
	public HttpUtil(Context context) {
		this.context = context;
	}

	/**
	 *
	 * @explaination service发送Http请求
	 * @author yazhizhao
	 * @time 2014-7-7下午3:36:36
	 * @param urlpath
	 * @return
	 * @throws Exception
	 */
	public String postAccessServer(String urlpath, String requestJSONStr) {
		Common.log("url = " + urlpath);
		Common.log("requestJSONStr = " + requestJSONStr);
		String result = null;
		URL url = null;
		conn = null;
		os = null;
		try {
			url = new URL(urlpath);
			if (conn == null) {
				conn = (HttpURLConnection) url.openConnection();
			}
			conn.setConnectTimeout(TIMEOUT);
			conn.setReadTimeout(TIMEOUT);
			conn.setDoInput(true);
			conn.setDoOutput(true);
			conn.setRequestMethod("POST");
			conn.setUseCaches(false);
			conn.setRequestProperty("connection", "keep-alive");
			conn.setRequestProperty("Charset", "UTF-8");
			if (requestJSONStr != null) {
				byte[] dataUpdate = requestJSONStr.getBytes("UTF-8");
				os = conn.getOutputStream();
				os.write(dataUpdate);
			}

			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			is = conn.getInputStream();
			byte[] temp = new byte[256];
			int len = 0;
			while ((len = is.read(temp)) != -1) {
				baos.write(temp, 0, len);
			}

			byte[] dataResult = baos.toByteArray();
			Common.log("data Length = " + dataResult.length);
			if (dataResult != null || !"".equals(dataResult)) {
				result = new String(dataResult, "UTF-8");
			}
			is.close();
			is = null;
			if (os != null) {
				os.close();
				os = null;
			}
			conn = null;
			url = null;
		} catch (MalformedURLException e) {
			Common.log("MalformedURLException = " + e.toString());
		} catch (IOException e) {
			Common.log("IOException = " + e.toString());
		} catch (Exception e) {
			Common.log("Exception = " + e.toString());
		}
		Common.log("result = " + result);
		Common.log("Stop At HttpUtil");
		return result;
	}

	/**
	 *
	 * @explaination 判断网络是否可用
	 * @author yazhizhao
	 * @time 2014-7-7下午3:37:20
	 * @param context
	 * @return
	 */
	public static boolean isNetworkAvailable(Context context) {
		boolean flag = false;
		ConnectivityManager localConnectivityManager = (ConnectivityManager) context
				.getApplicationContext().getSystemService(
						Context.CONNECTIVITY_SERVICE);
		if (localConnectivityManager != null) {
			try {
				NetworkInfo localNetworkInfo = localConnectivityManager
						.getActiveNetworkInfo();
				if ((localNetworkInfo == null)
						|| (!localNetworkInfo.isAvailable()))
					flag = false;// 不可用
				else
					flag = true;// 可用
			} catch (Exception e) {
				e.printStackTrace();
				flag = false;
			}
		}
		return flag;
	}

	/**
	 * 强制断开连接
	 *
	 * @return
	 */
	public boolean killConnection() {
		try {
			if (is != null) {
				is.close();
				is = null;
			}
			if (os != null) {
				os.close();
				os = null;
			}
			if (conn != null) {
				conn.disconnect();
				conn = null;
			}
		} catch (Exception e) {
			return false;
		}
		return true;
	}
}

赵雅智_Android_网络操作工具类

时间: 2024-08-10 02:37:29

赵雅智_Android_网络操作工具类的相关文章

赵雅智_java网络编程(4)TCP/IP、Http和Socket的区别

通过java网络编程(1)网络体系结构及通信协议我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可比性 TPC/IP协议是传输层协议,主要解决数据如何在网络中传输, 而HTTP是应用层协议,主要解决如何包装数据. socket是对TCP/IP协议的封装和应用(程序员层面上). 三者关系 总的来说 传输层的TCP是基于网络层的IP协议的 应用层的HTTP协议又是基于传输层的TCP协议的 Socket本身不算是协议,它只是提供了一个针对TCP或者

赵雅智_java网络编程(5)TCP和udp区别

1.TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性; 而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的.不可靠的一种数据传输协议. 2.也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好. 知道了TCP和UD

赵雅智_android实例_当监听类有数据更新时下拉刷新

之前两篇文章分别介绍了OnScrollListener的实现和ContentProvider监听数据的变化,下面我们就结合者两个知识点实现一个小项目 项目需求 使用当ContentProvider监听类有数据更新时,在当前界面进行提示,并用OnScrollListener实现下拉刷新 实现效果 通过ContentProvider显示数据在界面 当监听类发生变化时 下拉刷新后显示数据 实现步骤 android_sqlite项目 定义操作标识 匹配结果码 继承ContentProvider类重写方法

赵雅智_android http get请求

<!-- 添加网络访问权限 --> <uses-permission android:name="android.permission.INTERNET"/> 布局文件 activity_login.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content&q

赵雅智_handler

package com.example.android_http; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Tex

赵雅智:android教学大纲

带下划线为具体内容链接地址,点击后可跳转,希望给大家尽一些微薄之力,目前还在整理中 教学章节 教学内容 学时安排 备注 1 Android快速入门 2 Android模拟器与常见命令 3 Android用户界面设计 4 Android网络通信及开源框架引用 5 线程与消息处理 6 数据存储及访问 7 Android基本单元应用activity 8 Android应用核心Intent 9 资源访问 10 ContentProvider实现数据共享 11 BroadcastReceiver 12 S

赵雅智_HttpClient的 get请求和post请求

DefaultHttpClient和它的兄弟AndroidHttpClient都是HttpClient具体的实现类,它们都拥有众多的API,而且实现比较稳定,bug数量也很少. 但同时也由于HttpClient的API数量过多,使得我们很难在不破坏兼容性的情况下对它进行升级和扩展,所以目前Android团队在提升和优化HttpClient方面的工作态度并不积极. 在Android开发中,Android SDK附带了Apache的HttpClient,它是一个完善的客户端.它提供了对HTTP协议的

赵雅智_Android_Canvas

Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0. android.graphics和android.graphics.drawable包 大部分2D使用的api都在android.graphics和android.graphics.drawable包中. 他们提供了图形处理相关的: Canvas.ColorFilter.Point(点)和RetcF(矩形)等 还有一些动画相关的:AnimationDrawable. Bit

赵雅智_运用Bitmap和Canvas实现图片显示,缩小,旋转,水印

上一篇已经介绍了Android种Bitmap和Canvas的使用,下面我们来写一个具体实例 http://blog.csdn.net/zhaoyazhi2129/article/details/32136179 运行效果: 主要代码 package com.example.guaguale; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import and