/* * Copyright (C) 2010 The MobileSecurePay Project * All right reserved. * author: shiqun.shi@alipay.com */ package com.external.alipay; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import java.util.ArrayList; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLSession; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.message.BasicNameValuePair; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * 网络连接工具类 * */ public class NetworkManager { static final String TAG = "NetworkManager"; private int connectTimeout = 30 * 1000; private int readTimeout = 30 * 1000; Proxy mProxy = null; Context mContext; public NetworkManager(Context context) { this.mContext = context; setDefaultHostnameVerifier(); } /** * 检查代理,是否cnwap接入 */ @SuppressWarnings("deprecation") private void detectProxy() { ConnectivityManager cm = (ConnectivityManager) mContext .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo ni = cm.getActiveNetworkInfo(); if (ni != null && ni.isAvailable() && ni.getType() == ConnectivityManager.TYPE_MOBILE) { String proxyHost = android.net.Proxy.getDefaultHost(); int port = android.net.Proxy.getDefaultPort(); if (proxyHost != null) { final InetSocketAddress sa = new InetSocketAddress(proxyHost, port); mProxy = new Proxy(Proxy.Type.HTTP, sa); } } } private void setDefaultHostnameVerifier() { // HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; HttpsURLConnection.setDefaultHostnameVerifier(hv); } /** * 发送和接收数据 * * @param strReqData * 请求数据 * @param strUrl * 请求地址 * @return */ public String SendAndWaitResponse(String strReqData, String strUrl) { // detectProxy(); String strResponse = null; ArrayList<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>(); pairs.add(new BasicNameValuePair("requestData", strReqData)); HttpURLConnection httpConnect = null; UrlEncodedFormEntity p_entity; try { p_entity = new UrlEncodedFormEntity(pairs, "utf-8"); URL url = new URL(strUrl); if (mProxy != null) { httpConnect = (HttpURLConnection) url.openConnection(mProxy); } else { httpConnect = (HttpURLConnection) url.openConnection(); } httpConnect.setConnectTimeout(connectTimeout); httpConnect.setReadTimeout(readTimeout); httpConnect.setDoOutput(true); httpConnect.addRequestProperty("Content-type", "application/x-www-form-urlencoded;charset=utf-8"); httpConnect.connect(); OutputStream os = httpConnect.getOutputStream(); p_entity.writeTo(os); os.flush(); InputStream content = httpConnect.getInputStream(); strResponse = BaseHelper.convertStreamToString(content); BaseHelper.log(TAG, "response " + strResponse); } catch (IOException e) { e.printStackTrace(); } finally { httpConnect.disconnect(); } return strResponse; } /** * 下载文件 * * @param context * 上下文环境 * @param strurl * 下载地址 * @param path * 下载路径 * @return */ public boolean urlDownloadToFile(Context context, String strurl, String path) { boolean bRet = false; // detectProxy(); try { URL url = new URL(strurl); HttpURLConnection conn = null; if (mProxy != null) { conn = (HttpURLConnection) url.openConnection(mProxy); } else { conn = (HttpURLConnection) url.openConnection(); } conn.setConnectTimeout(connectTimeout); conn.setReadTimeout(readTimeout); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); File file = new File(path); file.createNewFile(); FileOutputStream fos = new FileOutputStream(file); byte[] temp = new byte[1024]; int i = 0; while ((i = is.read(temp)) > 0) { fos.write(temp, 0, i); } fos.close(); is.close(); bRet = true; } catch (IOException e) { e.printStackTrace(); } return bRet; } }