Android HttpUrlConnection 訪問cmwap

Android HttpUrlConnection 訪問cmwaphtml

咱們知道Android下主要有兩種直接的Http聯網方式,一種是java原生的HttpUrlConnection,另外一種是apache的HttpClient。這兩種聯網方式沒有特殊的需求的時候都能知足咱們的聯網須要。java

各自特色:apache

1.HttpUrlConnection只是對socket作了封裝,對Http協議自己的封裝不是太多;用起來代碼稍微複雜,聯網時用戶可以插入更多的操做。服務器

2.HttpClient對Http的封裝比較好,用起來代碼簡單,但用戶可以控制的部分比較少app

通常狀況下在不涉及文件上傳下載,或是其餘進度回調時,使用HttpClient成本比較低。若是程序須要獲取聯網進度回調等,則應該採用HttpUrlConnection。socket

從以上的角度來看,HttpUrlConnection能夠完成HttpClient的所有功能。ide

可是,url

對於某些及其特殊的狀況,即本文要討論的,採用HttpUrlConnection則不行,而必須使用HttpClientspa

前段時間在涉及廣州移動CMWap代理的時候,請求的代理地址會被重定向到gd.10086.cn。代理

假如咱們如今要訪問地址:http://zilla.blog.51cto.com/3095640/921153

咱們在CMWap的環境下設置了代理爲:10.0.0.172端口爲80

最終咱們的抓包數據位:

HTTP/1.1 302 Found

Date: Wed, 11 Jul 2012 07:17:34 GMT

Server: IBM_HTTP_Server

Location: http://www.gd.chinamobile.com/3095640/921153

Vary: Accept-Encoding

Content-Type: text/html; charset=iso-8859-1

Content-Length: 237

Connection: Keep-alive

Via: 1.1 AN-0001544157030075



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://www.gd.chinamobile.com/
3095640/921153">here</a>.</p>
</body></html>

即咱們最終訪問的位置變成了,http://www.gd.chinamobile.com/agent/3095640/921153,而這個頁面並不存在,服務器端將其變成了一個跳轉頁面。

 

 下面來看咱們的request信息:

POST Http://zilla.blog.51cto.com/3095640/921153 HTTP/1.1

x-online-host: zilla.blog.51cto.com:80

User-Agent: Dalvik/(這裏迴避一下)

Host: zilla.blog.51cto.com:80

Connection: Keep-Alive

Content-Type: application/x-www-form-urlencoded

Content-Length: 0

中間經歷了ICMPV6——>DNS——>DNS——>DNS——>DNS,最終咱們的代理地址變成了廣州移動的代理地址

相關文章
相關標籤/搜索