http访问方式
package com.m.billingplug.util; import java.io.IOException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject; import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Handler;
import android.os.Message; import com.m.billingplug.entity.MobileNetworkMgr;
import com.m.billingplug.entity.NetworkMgr;
import com.m.billingplug.entity.ParamValue;
import com.m.billingplug.entity.SystemCode; /**
* 网络管理类
*
* @author mhx
*
*/
public class HttpNetUtil { /**
* 日志标签
*/
private static final String tag = HttpNetUtil.class.getSimpleName(); /**
* 发送get请求
* @param url 访问地址
* @param map 参数
* @return
* @throws ClientProtocolException
* @throws IOException
*/
public String requestGet(String url, Map<String, Object> map) throws ClientProtocolException, IOException {
// String url = path + "?name=" + name + "&pwd=" + pwd;
// 设置参数
if (map != null && map.size() > 0) {// 有参数
url += "?";
for (Entry<String, Object> entry : map.entrySet()) {
url += entry.getKey() + "=" + entry.getValue() + "&";
}
url = url.substring(0, url.length() - 1);
}
HttpGet httpGet = new HttpGet(url);
HttpResponse response = new DefaultHttpClient().execute(httpGet);
String result = "";
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = EntityUtils.toString(entity, HTTP.UTF_8);
}
return result;
} /**
* 发送post请求
* @param url 访问地址
* @param map 参数
* @return
* @throws Exception
*/
public String requestPost(String url, Map<String, Object> map) throws Exception {
LogUtil.i("++++++++++++ send request ++++++++++++++");
LogUtil.i("url:"+url);
LogUtil.i("param:"+map);
LogUtil.i("++++++++++++++++++++++++++++++++++++++"); HttpPost httpPost = new HttpPost(url);
// 请求超时
httpPost.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);
// 读取超时
httpPost.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000); List<NameValuePair> list = new ArrayList<NameValuePair>();
// 设置参数
if (map != null && map.size() > 0) {// 有参数
for (Entry<String, Object> entry : map.entrySet()) {
list.add(new BasicNameValuePair(entry.getKey(), entry
.getValue() + "" ));
}
}
httpPost.setEntity(new UrlEncodedFormEntity(list, HTTP.UTF_8));
String result = "";
HttpResponse response = new DefaultHttpClient().execute(httpPost); int httpCode = response.getStatusLine().getStatusCode() ;
LogUtil.i("httpCode" + httpCode); HttpEntity entity = response.getEntity();
result = EntityUtils.toString(entity, HTTP.UTF_8); LogUtil.i("--------------http respnose------------------");
LogUtil.i(result);
LogUtil.i("---------------------------------------------");
/*if (httpCode == 200) {
}*/ return result;
} /**
* post请求
* @param list 参数
* @param url 访问地址
* @return
* @throws IOException
* @throws JSONException
*/
public JSONObject requestPost(List<NameValuePair> list, String url) throws IOException, JSONException { for (int i = 0; i < list.size(); i++) {
LogUtil.i(tag, "sentData: " + list.get(i).toString());
} LogUtil.i(tag, "url = " + url); DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
// 请求超时
defaultHttpClient.getParams().setParameter(
CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
// 读取超时
defaultHttpClient.getParams().setParameter(
CoreConnectionPNames.SO_TIMEOUT, 10000);
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
list, HTTP.UTF_8);
httpPost.setEntity(urlEncodedFormEntity); HttpResponse httpResponse = defaultHttpClient.execute(httpPost);
int httpStatusCode = httpResponse.getStatusLine().getStatusCode();
LogUtil.i(tag, "httpStatusCode = " + httpStatusCode);
JSONObject jsonObject = null; switch (httpStatusCode) {
case 200:// 成功
String result = EntityUtils.toString(httpResponse.getEntity(),
HTTP.UTF_8);
LogUtil.i(tag, "result =" + result);
jsonObject = new JSONObject(result);
break;
default:
httpResponse.getEntity().consumeContent();
break;
}
return jsonObject;
} /**
* 发送post请求 (第一次,直接去访问 第二次。网络不通,打开wifi 第三次。wifi不可以用,关wifi,打开2g,3g)
* @param context 上下文
* @param url 访问地址
* @param params 参数
* @param myHandler handler
* @return
*/
public String requestPost(Context context, String url, Map<String, Object> params, Handler myHandler){
String result = null;
try {
//第一次,直接去访问
LogUtil.i(tag, "第一次,直接去访问");
result = requestPost(url, params);
} catch (Exception e) {
try {
//第二次。网络不通,打开wifi
LogUtil.i(tag, "第二次。网络不通,打开wifi");
openWifi(context);
result = requestPost(url, params);
} catch (Exception e1) {
try {
//第三次。wifi不可以用,关wifi,打开2g,3g
LogUtil.i(tag, "第三次。wifi不可以用,关wifi,打开2g,3g");
openMobileNetwork(context);
result = requestPost(url, params);
} catch (Exception e2) {
if (e2 instanceof IllegalStateException) {
e2.printStackTrace();
} else {
if(myHandler != null) {
Message msg = new Message();// 定义Message
msg.what = 1;
myHandler.sendMessage(msg);// 发送消息到子线程
}
LogUtil.i("没有找到可以的网络");
//Thread.currentThread().join();
return null;
}
}
}
}
return result;
} /**
* post请求 (如果网络不通,打开wifi,2g,3g去访问;如果再不通,关wifi,打开2g,3g去访问)
* @param list 参数
* @param url 访问地址
* @param context 上下文
* @param isNetWork true:外部有网络,不需要自己打开网络; false:外部没有网络,需要自己打开网络
* @param poll 是否需要轮询访问
* @return
*/
public JSONObject requestPost(List<NameValuePair> list, String url, Context context, boolean isNetWork, boolean poll) {
JSONObject jsonObject = null;
if (poll) {// 需要轮询访问
for (int i = 0; i < 7; i++) {
try {
if (i == 0) {
if (isNetWork) {// 外部有网络,不需要自己打开网络
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {// 外部没有网络,需要自己打开网络
if (openNetwork(context)) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {
LogUtil.i(tag, "不能打开网络i=" + i);
}
}
} else if (i == 1) {
Thread.sleep(1000 * 60 * 2);
if (isNetWork) {// 外部有网络,不需要自己打开网络
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {// 外部没有网络,需要自己打开网络
if (openNetwork(context)) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {
LogUtil.i(tag, "不能打开网络i=" + i);
}
}
} else if (i == 2) {
Thread.sleep(1000 * 60 * 10);
if (isNetWork) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {// 外部没有网络,需要自己打开网络
if (openNetwork(context)) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {
LogUtil.i(tag, "不能打开网络i=" + i);
}
}
} else if (i == 3) {
Thread.sleep(1000 * 60 * 60);
if (isNetWork) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {// 外部没有网络,需要自己打开网络
if (openNetwork(context)) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {
LogUtil.i(tag, "不能打开网络i=" + i);
}
}
} else if (i == 4) {
Thread.sleep(1000 * 60 * 60 * 2);
if (isNetWork) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {// 外部没有网络,需要自己打开网络
if (openNetwork(context)) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {
LogUtil.i(tag, "不能打开网络i=" + i);
}
}
} else if (i == 5) {
Thread.sleep(1000 * 60 * 60 * 6);
if (isNetWork) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {// 外部没有网络,需要自己打开网络
if (openNetwork(context)) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {
LogUtil.i(tag, "不能打开网络i=" + i);
}
}
} else if (i == 6) {
Thread.sleep(1000 * 60 * 60 * 15);
if (isNetWork) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {// 外部没有网络,需要自己打开网络
if (openNetwork(context)) {
LogUtil.i(tag, "轮询次数i=" + i);
jsonObject = requestPost(list, url);
} else {
LogUtil.i(tag, "不能打开网络i=" + i);
}
}
} JsonUtil jsonUtil = new JsonUtil();
String code = jsonUtil.paresJSON(jsonObject, "code"); if (SystemCode.SUCCEED.equals(code)) {
LogUtil.i(tag, "访问成功!");
break;
} else {
LogUtil.i(tag, "访问失败!");
}
} catch (UnknownHostException e) {
LogUtil.i(tag, "wifi不通,打开2G和3G");
// 关闭wifi,打开2g,3g
if (openMobileNetwork(context)) {
try {
LogUtil.i(tag, "wifi关闭了,2G打开了");
jsonObject = requestPost(list, url);
} catch (UnknownHostException e1) {
LogUtil.i(tag, "网络不通1!");
e1.printStackTrace();
} catch (IOException e1) {
LogUtil.i(tag, "IO异常1!");
e1.printStackTrace();
} catch (JSONException e1) {
LogUtil.i(tag, "json解析出错1!");
e1.printStackTrace();
} catch (Exception e1) {
LogUtil.i(tag, "其他异常1!");
e1.printStackTrace();
}
} else {
LogUtil.i(tag, "不能打开网络1!");
} // LogUtil.i(tag, "网络不通1!");
// LogUtil.i(e.toString());
} catch (IOException e) {
LogUtil.i(tag, "IO异常2!");
LogUtil.i(e.toString());
} catch (JSONException e) {
LogUtil.i(tag, "json解析出错2!");
LogUtil.i(e.toString());
} catch (Exception e) {
LogUtil.i(tag, "其他异常2!");
LogUtil.i(e.toString());
}
} } else {// 不需要轮询访问
if (isNetWork) {// 外部有网络,不需要自己打开网络
try {
jsonObject = requestPost(list, url);
} catch (UnknownHostException e) {
LogUtil.i(tag, "网络不通3!");
LogUtil.i(e.toString());
} catch (IOException e) {
LogUtil.i(tag, "IO异常3!");
LogUtil.i(e.toString());
} catch (JSONException e) {
LogUtil.i(tag, "json解析出错3!");
LogUtil.i(e.toString());
} catch (Exception e) {
LogUtil.i(tag, "其他异常3!");
LogUtil.i(e.toString());
}
} else {// 外部没有网络,需要自己打开网络
if (openNetwork(context)) {
try {
jsonObject = requestPost(list, url);
} catch (UnknownHostException e) {
// 关闭wifi,打开2g,3g
if (openMobileNetwork(context)) {
try {
jsonObject = requestPost(list, url);
} catch (UnknownHostException e1) {
LogUtil.i(tag, "网络不通4!");
e1.printStackTrace();
} catch (IOException e1) {
LogUtil.i(tag, "IO异常4!");
e1.printStackTrace();
} catch (JSONException e1) {
LogUtil.i(tag, "json解析出错4!");
e1.printStackTrace();
} catch (Exception e1) {
LogUtil.i(tag, "其他异常4!");
e1.printStackTrace();
}
} else {
LogUtil.i(tag, "不能打开网络4!");
}
// LogUtil.i(tag, "网络不通3!");
// LogUtil.i(e.toString());
} catch (IOException e) {
LogUtil.i(tag, "IO异常5!");
LogUtil.i(e.toString());
} catch (JSONException e) {
LogUtil.i(tag, "json解析出错5!");
LogUtil.i(e.toString());
} catch (Exception e) {
LogUtil.i(tag, "其他异常5!");
LogUtil.i(e.toString());
}
} else {
LogUtil.i(tag, "不能打开网络5!");
}
}
} return jsonObject;
} /**
* 打开wifi,2g,3g
*
* @param context
* @return 是否有网络
*/
private boolean openNetwork(Context context) { LogUtil.i(tag, "打开移网");
// 打开移网
NetworkMgr network = new NetworkMgr();
if (!ParamValue.TWOG.equals(network.getNetworkType(context))
&& !ParamValue.TWOG.equals(network.getNetworkType(context))) {
// 开启移动网络
MobileNetworkMgr mobileNetworkAdmin = new MobileNetworkMgr();
mobileNetworkAdmin.OpenMobileNetwork(context);
} LogUtil.i(tag, "打开wifi");
// 打开wifi
WifiManager wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
int timetag = 0;
if (ParamValue.NONE.equals(network.getNetworkType(context))) {
wifiManager.setWifiEnabled(true);
} LogUtil.i(tag, "轮循等待");
while (ParamValue.NONE.equals(network.getNetworkType(context))) {
++timetag;
if (timetag == 20) {
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
LogUtil.i(e.toString());
}
}
if (ParamValue.NONE.equals(network.getNetworkType(context))) {
LogUtil.i(tag, "网络打不开!");
return false;
} else {
LogUtil.i(tag, "网络已打开!");
return true;
}
} /**
* 打开wifi
*
* @param context
* @return 是否有网络
*/
private boolean openWifi(Context context) {
NetworkMgr network = new NetworkMgr();
LogUtil.i(tag, "打开wifi");
// 打开wifi
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int timetag = 0;
if (ParamValue.NONE.equals(network.getNetworkType(context))) {
wifiManager.setWifiEnabled(true);
} LogUtil.i(tag, "轮循等待打开wif");
while (ParamValue.NONE.equals(network.getNetworkType(context))) {
++timetag;
if (timetag == 20) {
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
LogUtil.i(e.toString());
}
}
if (ParamValue.NONE.equals(network.getNetworkType(context))) {
LogUtil.i(tag, "wifi网络打不开!");
return false;
} else {
LogUtil.i(tag, "wifi网络已打开!");
return true;
}
} /**
* 关闭wifi,打开移动网络
*
* @param context
* @return 是否有网络
*/
private boolean openMobileNetwork(Context context) { //关闭wifi
LogUtil.i(tag, "关闭wifi");
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
NetworkMgr network = new NetworkMgr();
int timetag = 0;
if (wifiManager.isWifiEnabled()) {
System.out.println("into wifi enable");
wifiManager.setWifiEnabled(false);
}
while (wifiManager.isWifiEnabled()) {
++timetag;
if (timetag == 5) {
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
LogUtil.i(e.toString());
}
} if (!ParamValue.TWOG.equals(network.getNetworkType(context)) && !ParamValue.THREEG.equals(network.getNetworkType(context))) {
// 开启移动网络
LogUtil.i(tag, "开启移动网络");
MobileNetworkMgr mobileNetworkAdmin = new MobileNetworkMgr();
mobileNetworkAdmin.OpenMobileNetwork(context);
int openTime = 0;
while (ParamValue.NONE.equals(network.getNetworkType(context))) {
++openTime;
if (openTime == 20) {
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
LogUtil.i(e.toString());
}
}
} if (!ParamValue.TWOG.equals(network.getNetworkType(context)) && !ParamValue.THREEG.equals(network.getNetworkType(context))) {
LogUtil.i(tag, "不能打开2G,3G");
return false;
} else {
LogUtil.i(tag, "已关闭WIFI,打开2G,3G");
return true;
} } /**
* 关闭wifi,打开移动网络
* @param context 上下文
*/
// @Deprecated
// private void openMobileNetwork2(Context context) {
// try {
// //关闭wifi
// LogUtil.i(tag, "关闭wifi");
// WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
// int timetag = 0;
// if (wifiManager.isWifiEnabled()) {
// System.out.println("into wifi enable");
// wifiManager.setWifiEnabled(false);
// }
// while (wifiManager.isWifiEnabled()) {
// ++timetag;
// if (timetag == 5) {
// break;
// }
// Thread.sleep(1000);
// }
//
// NetworkMgr network = new NetworkMgr();
// if (!ParamValue.TWOG.equals(network.getNetworkType(context)) && !ParamValue.THREEG.equals(network.getNetworkType(context))) {
// // 开启移动网络
// LogUtil.i(tag, "开启移动网络");
// MobileNetworkMgr mobileNetworkAdmin = new MobileNetworkMgr();
// mobileNetworkAdmin.OpenMobileNetwork(context);
// int openTime = 0;
// while (ParamValue.NONE.equals(network.getNetworkType(context))) {
// ++openTime;
// if (openTime == 8) {
// break;
// }
// Thread.sleep(1000);
// }
// }
//
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// }
}
http访问方式的更多相关文章
- ADO.NET编程之美----数据访问方式(面向连接与面向无连接)
最近,在学习ADO.NET时,其中提到了数据访问方式:面向连接与面向无连接.于是,百度了一下,发现并没有很好的资料,然而,在学校图书馆中发现一本好书(<ASP.NET MVC5 网站开发之美&g ...
- Objective-C 中self.与_访问方式的区别
Objective-C中属性self.a与_a访问的区别: 在OC中我们可以通过指令@property定义属性. OC对属性封装了许多方法,同时也会自动实现一些方法,相比实例变量,感觉更加面向对象些. ...
- 在APACHE服务器上的访问方式上去除index.php
在APACHE服务器上的访问方式上去除index.php 下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index ...
- Django 之 ForeignKey、ManyToMany的访问方式
1.ForeignKey 情况I: from django.db import models class Blog(models.Model): pass class Entry(models.Mod ...
- Java中Map集合的四种访问方式(转)
最近学习Java发现集合类型真是很多,访问方式也很灵活,在网上找的方法,先放下备用 public static void main(String[] args) { Map<String, St ...
- TP中的四种url访问方式
什么是PATHINFO:就是http://localhost/index.php/Home/Index/index/a/1/b/2?c=3中的红色部分, 注意c=3并不是pathinfo的一部分,它是 ...
- smarty中三种变量的访问方式
在模板中smarty有三种变量,第一种,php分配的变量,第二种配置文件里的变量,第三种,PHP全局数组里的变量,配置文件里变量的访问方式可以是{#bgcolor#},"#"必须紧 ...
- thinkphp四种url访问方式详解
本文实例分析了thinkphp的四种url访问方式.分享给大家供大家参考.具体分析如下: 一.什么是MVC thinkphp的MVC模式非常灵活,即使只有三个中和一个也可以运行. M -Model 编 ...
- HDFS副本机制&负载均衡&机架感知&访问方式&健壮性&删除恢复机制&HDFS缺点
副本机制 1.副本摆放策略 第一副本:放置在上传文件的DataNode上:如果是集群外提交,则随机挑选一台磁盘不太慢.CPU不太忙的节点上:第二副本:放置在于第一个副本不同的机架的节点上:第三副本:与 ...
- Oracle 表的访问方式(1) ---全表扫描、通过ROWID访问表
1.Oracle访问表的方式 全表扫描.通过ROWID访问表.索引扫描 2.全表扫描(Full Table Scans, FTS) 为实现全表扫描,Oracle顺序地访问表中每条记录,并检查每一条记录 ...
随机推荐
- wampsever修改数据库密码
①进入localhost中的mysql数据库 ②再进入mysql数据库中的user表 ③将user表中的三个root账号的密码全部改为你想要的密码(不需要经过MD5加密) ④保存后重新启动服务 如果在 ...
- JavaScript实现AES算法加密和解密
JavaScript的加密和解密用的是google的CryptoJS库.本文以AES/ECB/NoPadding为例展示AES加密和解密的方法. 需要下载CryptoJS库,下载地址如下:https: ...
- virtualBox+centos使用mount -t vboxsf挂载
1.先确保virtualBox安装目录下有对应的文件VBoxGuestAdditions.iso 2.点击设备下的“安装增强功能”,之后再centos可视化界面一步一步点击即可 3.virtualBo ...
- 怎样提高DB2存储过程性能
高性能的SQL过程是数据库开发人员所追求的,我将不断把学到的,或在实际开发中用到的一些提高SQL过程性能的技巧整理出来,温故而知新. 1,在只使用一条语句即可做到时避免使用多条语句 让我们从一个简单的 ...
- 性能测试培训day1
测试本质: 1构造测试数据和期望结果 2执行 3验证 自动化测试: 写完代码,单元测试测代码逻辑,单元测试搞清楚代码逻辑就行了(白盒测试)先静态,运行前用工具扫描BUG例如(a==11写成a=11), ...
- nginx配置location项的URL匹配规则
Localtion URL的正则匹配规则 示例 location / { try_files $uri @apache; } #所有的路径都是/开头,表示匹配所有 location @apache { ...
- c#数据库连接学习
/*通过C#winform程序访问数据库数据 用到的命名空间和变量类型: using System.Data.SqlClient; SqlConnection:数据库连接类 SqlCommand:数据 ...
- LIBSVM使用方法及参数设置
LIBSVM 数据格式需要---------------------- 决策属性 条件属性a 条件属性b ... 2 1:7 2:5 ... 1 1:4 2:2 ... 数据格式转换--------- ...
- 【Codeforces 1031C】Cram Time
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 如果找到最大的n使得1+2+...+n<=a+b 然后第一天输出1,2.3,4....t1 这里1+2+..+t1<=a 这还远远 ...
- 关于iphone 微信浏览器编码问题
这个问题最终没有完美的解决,给出的一个解决方法是返回一个html文档.