import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URI; import java.net.URL; import java.net.URLEncoder; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; /** * 网络连接辅助类 *项目名称:xxxxxxxx * * @author linchunda * */ public class HttpUtil { private static final String TAG = "HttpUtil"; /** 连接超时 */ private static final int TIME_OUT = 5 * 1000; /** * 发送post请求 * * @param strUrl * 网址路径 * @param map * 请求的参数 * @return 返回请求的结果 */ public static String executePost(String strUrl, Map<String, String> map) { String result = null; BufferedReader reader = null; try { HttpClient client = new DefaultHttpClient(); // HttpPost连接对象 HttpPost request = new HttpPost(); request.setURI(new URI(strUrl)); // 使用NameValuePair来保存要传递的Post参数 List<NameValuePair> postParameters = new ArrayList<NameValuePair>(); if (null != map) { for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); postParameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } } // 设置字符集 UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity( postParameters, "utf-8"); request.setEntity(formEntity); HttpResponse response = client.execute(request); // HttpStatus.SC_OK表示连接成功 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { Log.i(TAG, "连接成功,连接状态码为:" + response.getStatusLine().getStatusCode()); reader = new BufferedReader(new InputStreamReader(response .getEntity().getContent())); StringBuffer strBuffer = new StringBuffer(""); String line = null; while ((line = reader.readLine()) != null) { strBuffer.append(line); } result = strBuffer.toString(); Log.i(TAG, result); } else { Log.i(TAG, "连接失败,连接状态码为:" + response.getStatusLine().getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); reader = null; } catch (IOException e) { e.printStackTrace(); } } } return result; } /** * 发送post请求 * * @param urlAddress * 请求的路径 * @param map * 请求的参数 * @return 返回请求后的结果 * @throws AccessUrlException */ public static String executeHttpPost(Context context, String urlAddress, Map<String, String> map) throws AccessUrlException, AccessTimeOutException { try { initSSL(); } catch (KeyManagementException e1) { e1.printStackTrace(); } catch (NoSuchAlgorithmException e1) { e1.printStackTrace(); } SharedPreferences sharedPreferences = context.getSharedPreferences( "YinYiTong", Context.MODE_PRIVATE); String result = null; URL url = null; HttpURLConnection connection = null; InputStreamReader in = null; try { url = new URL(urlAddress); connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(TIME_OUT); connection.setDoInput(true);// 使用 URL连接进行输入 connection.setDoOutput(true);// 使用 URL连接进行输出 connection.setUseCaches(false);// 忽略缓存 connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("Charset", "utf-8"); // session id String sessionId = sharedPreferences.getString("sessionId", ""); if (!StringUtil.isEmpty(sessionId)) { connection.setRequestProperty("Cookie", sessionId); } StringBuilder params = new StringBuilder(); // 设置参数 if (null != map) { for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); params.append(entry.getKey()); params.append("="); params.append(URLEncoder.encode(entry.getValue(), "utf-8")); params.append("&"); } } if (params.length() > 0) params.deleteCharAt(params.length() - 1); OutputStream outputStream = null; try { outputStream = connection.getOutputStream(); } catch (Exception e) { Log.w(TAG, "访问服务器地址:" + urlAddress + "超时."); throw new AccessTimeOutException("访问服务器地址:" + urlAddress + "超时."); } DataOutputStream dop = new DataOutputStream(outputStream); dop.write(params.toString().getBytes()); dop.flush(); dop.close(); if (connection.getResponseCode() == HttpStatus.SC_OK) { Log.i(TAG, "connection status is 200"); // 获取返回结果 in = new InputStreamReader(connection.getInputStream()); BufferedReader bufferedReader = new BufferedReader(in); StringBuffer strBuffer = new StringBuffer(); String line = null; while ((line = bufferedReader.readLine()) != null) { strBuffer.append(line); } result = strBuffer.toString(); Log.i(TAG, result); // session id不同,重新设置 String session_value = connection.getHeaderField("Set-Cookie"); if (!StringUtil.isEmpty(session_value)) { String[] sessionIds = session_value.split(";"); Log.i(TAG, "sessionId=" + sessionIds[0]); if (null != sessionIds[0] && !sessionIds[0].equalsIgnoreCase(sessionId)) { Editor editor = sharedPreferences.edit(); editor.putString("sessionId", sessionIds[0]); editor.commit(); } } } else { Log.w(TAG, "访问服务器异常,状态码为:" + connection.getResponseCode()); throw new AccessUrlException("访问服务器异常,状态码为:" + connection.getResponseCode()); } } catch (MalformedURLException e) { Log.e(TAG, "[executeHttpPost]:", e); } catch (ProtocolException e) { Log.e(TAG, "[executeHttpPost]:", e); } catch (UnsupportedEncodingException e) { Log.e(TAG, "[executeHttpPost]:", e); } catch (IOException e) { Log.e(TAG, "[executeHttpPost]:", e); } finally { if (connection != null) { connection.disconnect(); } if (in != null) { try { in.close(); } catch (IOException e) { Log.e(TAG, "[executeHttpPost]InputStreamReader关闭异常:", e); } } } return result; } /** * 接受任何证书,不考虑证书发行者及所在主机情况 * * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public static void initSSL() throws NoSuchAlgorithmException, KeyManagementException { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { // Trust always } public void checkServerTrusted(X509Certificate[] certs, String authType) { // Trust always } } }; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("SSL"); // Create empty HostnameVerifier HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String arg0, SSLSession arg1) { return true; } }; sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(hv); } /** * 检查网络连接 * * @param context * @return 有可用的接连返回true,否则返回false */ public static boolean hasNetwork(Context context) { ConnectivityManager con = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo workinfo = con.getActiveNetworkInfo(); if (workinfo == null || !workinfo.isAvailable()) { Log.w(TAG, "当前无网络连接......"); return false; } return true; } @SuppressWarnings("serial") public static class AccessUrlException extends Exception { public AccessUrlException() { super(); } public AccessUrlException(String msg) { super(msg); } @Override public String toString() { return super.toString(); } } @SuppressWarnings("serial") public static class AccessTimeOutException extends Exception { public AccessTimeOutException() { super(); } public AccessTimeOutException(String msg) { super(msg); } @Override public String toString() { return super.toString(); } } }
--------- 部分实例
try {
HttpResponse response = client.execute(myget);
BufferedReader reader = new BufferedReader(
new InputStreamReader(response.getEntity()
.getContent()));
for (String s = reader.readLine(); s != null; s = reader
.readLine()) {
builder.append(s);
}
JSONObject jsonObject = new JSONObject(builder.toString());
error = jsonObject.getInt("errno");
String errormsg = jsonObject.getString("errmsg");
Log.v("wgp",myget.getURI().toString());
Log.v("wgp", "error=" + error);
Log.v("wgp", "errormsg=" + errormsg);
if (error == 0) {
array = jsonObject.getJSONArray("data");
mFavoriteList = new ArrayList<FavoriteItem>();
FavoriteItem item = null;
String srcType;
for (int i = 0; i < array.length(); i++) {
item = new FavoriteItem();
item.setId(array.getJSONObject(i).getInt("id"));
item.setUserId(array.getJSONObject(i).getInt("userid"));
item.setUsername(array.getJSONObject(i).getString("username"));
item.setType(array.getJSONObject(i).getInt("type"));
item.setCid(array.getJSONObject(i).getInt("cid"));
item.setTitle(array.getJSONObject(i).getString("title"));
item.setUrl(array.getJSONObject(i).getString("url"));
item.setTag(array.getJSONObject(i).getString("tag"));
item.setSrc(array.getJSONObject(i).getString("src"));
item.setCreateDate(array.getJSONObject(i).getString("created"));
item.setModifiedDate(array.getJSONObject(i).getString("modified"));
srcType = array.getJSONObject(i).getString("src_type");
if(srcType != null && srcType.equals("cps")){
item.setSrc_type("industry");
}else{
item.setSrc_type(srcType);
}
mFavoriteList.add(item);
}
if (mFavoriteList.size() == 0) {
handler.sendEmptyMessage(-1);
} else {
handler.sendEmptyMessage(1);//更新主UI
}
}
} catch (Exception e) {
e.printStackTrace();
handler.sendEmptyMessage(-1);
} finally {
}
相关推荐
HttpClientUtil 是一个用于发送 HTTP 请求的工具类,主要支持 GET 和 POST 方法。它使用了 Apache HttpClient 库,这是一个强大的 Java 客户端编程工具包,用于处理 HTTP 协议。以下是对类中关键方法和概念的详细...
在Android平台上进行实时网络质量检测是一项重要的任务,它有助于开发者评估应用性能,优化网络请求,以及为用户提供流畅的网络体验。通常,我们可以利用系统内置的`ping`命令来实现这一功能。`ping`是一个用于测试...
- 在封装Util类时,需要考虑各种可能出现的异常情况,如用户拒绝权限、图片选取失败、网络连接问题等,并给出相应的提示。 - 提供异步处理机制,避免阻塞UI线程,提升用户体验。 7. **代码组织**: - 为了保持...
5. **util**模块:这个模块通常包含工具类,如网络请求的工具类NetUtil。NetUtil可以封装网络请求的通用逻辑,如创建OkHttpClient实例,设置超时时间,处理SSL证书等。此外,也可以包含处理JSON数据的工具类,如...
4. **NetworkUtil**:网络状态检测与网络请求辅助工具类。 5. **DateUtil**:日期时间处理工具类,提供了日期的格式化、比较和转换等功能。 6. **IOUtil**:输入输出流操作工具类,简化文件读写和资源操作。 7. **...
在Android中,通常我们会创建一个工具类或Util类,里面包含一个静态方法来检查网络连接。例如,我们可以创建一个名为`NetworkUtils`的类,其中包含一个名为`isNetworkAvailable()`的方法。这个方法会使用Android的...
普通权限是Android系统中最常见的一类权限,通常用于应用程序的一些基本功能。这类权限默认被授予,并且不需要用户在安装过程中特别授权。以下是部分普通权限的详细介绍: 1. **android.permission.ACCESS_LOCATION...
在Android开发中,工具类(Utility Class)是程序员经常创建的一种辅助类,它们通常包含一些静态方法,用于执行特定的任务,比如处理网络请求、管理数据库操作或者与时间相关的功能。以下是对这些知识点的详细说明:...
5. **网络请求工具类**:如`NetworkUtils`,包含检查网络连接状态、解析URL、获取IP地址等功能。这对于网络依赖性强的应用来说尤其重要。 6. **文件操作工具类**:`FileUtils`可以帮助开发者轻松地读写文件、创建...
5. **NetWorkUtil**:网络状态检测工具类,检查网络连接是否可用,区分WIFI和移动数据,有助于在网络不稳定时做出相应提示。 6. **JsonUtil**:JSON数据的解析和序列化工具类,可以将Java对象转换成JSON字符串,或...
- **设置连接参数**:在发起实际的网络请求之前,可以通过`setConnectTimeout()`等方法设置超时时间、请求头等参数。 - **连接到服务器**:调用`connect()`方法来建立与服务器的连接。 - **向服务器写数据**:如果...
- Android提供了`java.util.Calendar`、`java.text.SimpleDateFormat`和`java.time`包(API 26+)等类处理日期和时间。工具类可以封装这些功能,便于在应用中统一格式化和计算日期。 10. **图片处理工具类**: - ...
在Android开发中,字符串操作无处不在,StringUtil类通常包含了如字符串格式化、校验、拼接、截取等方法。例如,可以提供trim()方法去除字符串首尾空格,contains()方法检查字符串是否包含特定子串,以及isEmpty()...
在Android开发中,工具类通常以Utils、Helper或者Constants等命名,它们封装了如字符串处理、日期时间操作、网络请求、数据序列化、权限检查等各种常用功能。开发者应该能够在这个文件夹里找到各种以特定功能命名的...
它可以包含`isNetworkAvailable()`方法来检测设备是否已连接到网络,以及`sendHttpRequest()`方法用于执行网络请求,通常会结合Retrofit或Volley等网络库。 2. **单位转换工具类**:在Android应用中,可能需要将...
在Unity5.6及以上版本,你需要使用`UnityEngine.Android.Permission`类来请求权限。 4. **处理返回结果**: 当从Android相册选择图片后,Unity会接收到文件路径。在`OnReceiveFilePath`方法中,你可以加载这个图片...
"Android-Android快速开发工具类收集" 是一个整理了多个常用工具类的资源,旨在提高开发效率,减少网络搜索时间。下面将详细介绍这个资源中的关键知识点和可能包含的功能。 1. **StringUtil**: 字符串处理工具类,...
1. **设置JSP页面头部**:在JSP页面中,我们使用`<%@ page ... %>`指令来导入必要的Java库,例如`java.sql.*`和`java.util.*`,这些库包含了处理数据库连接和结果集所需的类。 2. **数据库连接**:在JSP中,通过`...
- 网络工具类:处理网络请求,如HTTP请求、WebSocket连接、下载上传等,可能封装了OkHttp、Retrofit等库。 - 日志工具类:提供日志打印,方便调试,支持自定义日志级别和过滤规则。 - 时间日期工具类:对日期时间...
6. **NetworkUtil**: 网络状态检测工具类,可以检查网络是否连接,是WiFi还是移动数据,以及网络是否可用。例如,`isNetworkAvailable()`可以判断设备是否已连接到网络。 7. **GsonUtil**: JSON解析工具类,基于...