2014年3月4日星期二

HTML5中对于网络是否断开的检测.很有意思哦 - 思思博士

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
HTML5中对于网络是否断开的检测.很有意思哦 - 思思博士  阅读原文»

1 //事件的封装
2 var EventUtil = {
3 addHandler: function (element, type, handler) {//注册事件
4 if (element.addEventListener) {//非IE
5 element.addEventListener(type, handler, false);
6 }
7 else if (element.attachEvent) {//IE
8 element.attachEvent("on" + type, handler);
9 }
10 else {//dom0级
11 element["on" + type] = handler;
12 }
13 },
14 removeHandler: function (element, type, handler) {//取消注册事件
15 if (element.removeEventListener) {//非IE
16 element.removeEventListener(type, handler, false);
17 }
18 else if (element.detachEvent) {//IE
19 element.detachEvent("on" + type, handler);
20 }
21 else {//dom0级
22 element["on" + type] = null;
23 }
24 },
25 getEvent: function (event) {//返回event的引用
26 return event ? event : window.event;
27 },
28 getTarget: function (event) {//返回鼠标单击的目标对象
29 return event.target || event.srcElement;
30 },
31 preventDefault: function (event) {//取消默认事件(a的href,radio,checkbox,)
32 if (event.preventDefault) {
33 event.preventDefault();
34 }
35 else {
36 event.returnValue = false;
37 }
38 },
39 stopPropagation: function (event) {//因为这个EventUtil只支持冒泡,不支持事件捕获,所以这个方法只能阻止冒泡
40 if (event.stopPrapagation) {
41 event.stopPropagation();
42 }
43 else {
44 event.cancelBubble = true;
45 }
46 },
47 getRelatedTarget: function (event) {//获取相关元素
48 /*
49 页面中有一个div;当鼠标离开这个div时,事件的主目标是div,而相关元素是body.
50 mouseover:事件的主目标是获得光标的元素,而相关元素就是那个失去光标的元素.
51 mouseout:事件的主目标是失去光标的元素,而相关元素使获得光标的那个元素.
52 */
53 if (event.relatedTarget) { return event.relatedTarget; }
54 else if (event.toElement) { return event.toElement; }
55 else if (event.fromElement) { return event.fromElement; }
56 else { return null; }
57 },
58 getButton: function (event) {//获取鼠标按钮的点击方式
59 if (document.implementation.hasFeature("MouseEvents", "2.0")) { return event.button; }
60 else {
61 switch (event.button) {
62 case 0:
63 case 1:
64 case 3:
65 case 5:
论述Android通过HttpURLConnection与HttpClient联网代理网关设置 - laozhu1124  阅读原文»

Android联网主要使用HttpURLConneciton和HttpClient进行联网,在手机联网的时候,我们优先选择wifi网络,其次在选择移动网络,这里所述移动网络主要指cmwap。

大家都知道cmwap连接需要设置代理地址和端口,那么,android程序中如何设置代理呢?这是个问题。

HttpURLConnection设置代理

1 //当我们使用的是中国移动的手机网络时,下面方法可以直接获取得到10.0.0.172,80端口
2 String host=android.net.Proxy.getDefaultHost();//通过andorid.net.Proxy可以获取默认的代理地址
3 int port =android.net.Proxy.getDefaultPort();//通过andorid.net.Proxy可以获取默认的代理端口
4 SocketAddress sa=new InetSocketAddress(host,port);
5 //定义代理,此处的Proxy是源自java.net
6 Proxy proxy=new Proxy(java.net.Proxy.Type.HTTP,sa);
7 URL getUrl = new URL(“www.baidu.com”);
8 HttpURLConnection con = (HttpURLConnection) getUrl.openConnection(proxy);//设置代理

HttpClient设置代理

1 DefaultHttpClient httpClient=new DefaultHttpClient();
2 String host=Proxy.getDefaultHost();//此处Proxy源自android.net
3 int port = Proxy.getPort(context);//同上
4 HttpHost httpHost = new HttpHost(host, port);
5 //设置代理
6 httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,httpHost);
7 HttpGet httpGet=new HttpPost("<a href="http://www.baidu.com">www.baidu.com</a>");
8 HttpResponse response=httpClient.execute(httpGet);

第一种方式:通过HttpURLConnection来访问

public static InputStream getHttpURLConnectionInputStream(Context context,String requestUrl,Map<String, String> param) {

URL url;
HttpURLConnection conn
= null;
InputStream input
= null;
try {
url
= new URL(requestUrl);
if(getAPNType(context)==NetWorkUtil.CMWAP) //当请求的网络为wap的时候,就需要添加中国移动代理
{
Proxy proxy
= new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress("10.0.0.172", 80));
conn
= (HttpURLConnection) url.openConnection(proxy);
}
else{
conn
= url.openConnection();
}
conn.setConnectTimeout(
10000); //请求超时
conn.setRequestMethod("POST"); //请求方式
conn.setReadTimeout(1000); //读取超时
conn.setDoOutput(true);
conn.setDoInput(
true);
conn.setUseCaches(
false);
conn.setRequestProperty(
"Charset", "UTF-8");
conn.setRequestProperty(
"Content-Type","application/x-www-form-urlencoded");
OutputStream os
= conn.getOutputStream();
StringBuilder sb
= new StringBuilder();
Iterator
<String> it = param.keySet().iterator();
while (it.hasNext()) {
String key
= it.next();
String value
= param.get(key);
sb.append(key).append(
"=").append(value).append("&");
}
String p
= sb.toString().substring(0, sb.length()-1);
System.out.println(
"请求的参数"+p);
os.write(p.getBytes(
"utf-8"));
os.close();
if(conn!=null)
{
input
= conn.getInputStream();
}

}
catch (Exception e) {
e.printStackTrace();
}
return input;
}

上面这种方式就是HttpURLConnection ,这种方式在android开发中也是比较常用的,希望朋友们也要熟悉的掌握!

第二种方式:HttpClient

public static InputStream getHttpClientInputStream(Context context,String requestUrl, Map<String, String> param)throws Exception {
HttpClient client
= new DefaultHttpClient();
if(getAPNType(context)==NetWorkUtil.CMWAP) //当请求的网络为wap的时候,就需要添加中国移动代理
{
HttpHost proxy
= new HttpHost("10.0.0.172", 80);
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
proxy);
}
HttpPost hp
= new HttpPost(requestUrl);
hp.setHeader(
"Charset", "UTF-8");
hp.setHeader(
"Content-Type", "application/x-www-form-urlencoded");
List
<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();

Iterator
<String> it = param.keySet().iterator();
while (it.hasNext()) {
String key
= it.next();
list.add(
new BasicNameValuePair(key, param.get(key)));
}
hp.setEntity(
阅读更多内容

没有评论:

发表评论