程序中通过wap联网方式访问网络

TaiJi1985 2011-04-10 04:50:49
用户的联网方式大致有 wap net wifi 三种. 使用android包中提供的函数,HttpConnection只能使用net和wifi,wap方式无法访问.

问? 如何让程序可以通过wap访问网络?
...全文
720 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
arm2linux 2013-08-31
  • 打赏
  • 举报
回复
引用 9 楼 TaiJi1985 的回复:
恩,感谢楼上两位,我已经实现了. 另外我还发现了一个要点: 就是不管原来网页是何编码方式,用了这个cmwap后都变成了utf8 另外,一点,联通的cmwap网关也是10.00.00.172 么? 如何获取cmwap的网关ip和端口呢? 两位回来拿分的时候,帮忙解答一下.
在setRequestProperty的时候,可以设置"Accept-Charset"来改变编码格式,移动是10.0.0.172,电信是10.0.0.200,端口都是80,联通的不知道
oceanZhao 2011-07-11
  • 打赏
  • 举报
回复
楼上的 谢谢了,
DrSmart 2011-04-11
  • 打赏
  • 举报
回复
楼主能告诉我,你说的三种方法中,net是如何上网的
TaiJi1985 2011-04-11
  • 打赏
  • 举报
回复
感谢上面两位, 以前搜这个问题的资料都不知道怎么搜. 因为搜android cmwap 全部是android操作的答案.

现在知道用代理了. 就大体明白怎么做了.多谢两位.
AspireHouse 2011-04-11
  • 打赏
  • 举报
回复
楼上那样做只能支持移动的cmwap吧 “X-Online-Host”只是移动私有的扩展头吧
oDon 2011-04-11
  • 打赏
  • 举报
回复
给个完整的
private void doPost() throws IOException{

StringBuilder builder = new StringBuilder();
builder.append("http://");

if(bUsingProxy){
builder.append(proxy);
}else{
builder.append(host);
}

if(urlpage != null){
builder.append("/" + urlpage);
}

String desturl = builder.toString();
InputStream stream = null;
HttpURLConnection conn = null;
try{
byte[] data = params.getBytes();

URL url = new URL(desturl);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");

conn.setConnectTimeout(connectTimeout);
conn.setReadTimeout(readTimeout);
conn.setDoOutput(true);
conn.setUseCaches(false);
if(bUsingProxy){
conn.setRequestProperty("X-Online-Host", host);
}
conn.setRequestProperty("Accept", "text/plain");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Connection", "Close");
conn.setRequestProperty("Content-Length", String.valueOf(data.length));
conn.connect();

OutputStream outputStream = conn.getOutputStream();
outputStream.write(data);
outputStream.flush();
outputStream.close();

int resp_code = conn.getResponseCode();
Map<String, List<String>> headerMap = conn.getHeaderFields();
listener.action(NetworkListener.RESPONSE_CODE, new Integer(resp_code));

if(resp_code == HttpURLConnection.HTTP_OK){
stream = conn.getInputStream();
if(stream != null){
Log.d("cn.cmcc.t", "GETRESPONSE:" + resp_code);
}
if(mCommand != -1)
listener.action(NetworkListener.RECEIVE_STREAM, new Object[]{new Integer(mCommand),stream});
else
listener.action(NetworkListener.RECEIVE_STREAM, stream);
}

} catch (IOException e) {
e.printStackTrace();
listener.action(NetworkListener.REQUEST_TIMEOUT, null);
} finally{
if(stream != null)
stream.close();
if(conn != null)
conn.disconnect();
}
}
oDon 2011-04-11
  • 打赏
  • 举报
回复
if(bUsingProxy){
conn.setRequestProperty("X-Online-Host", host);
}
conn.setRequestProperty("Accept", "text/plain");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Connection", "Close");
conn.setRequestProperty("Content-Length", String.valueOf(data.length));
conn.connect();
AspireHouse 2011-04-11
  • 打赏
  • 举报
回复
wap上网是要经过代理的,取得代理地址 设置代理
AspireHouse 2011-04-11
  • 打赏
  • 举报
回复
android.net.Proxy.getHost(context);获取网关IP
android.net.Proxy.getPort(context);获得端口
TaiJi1985 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 drsmart 的回复:]

楼主能告诉我,你说的三种方法中,net是如何上网的
[/Quote]

额? net方式, 不用做其他设置,就照普通的来,就可以上网的....

我也很奇怪.
TaiJi1985 2011-04-11
  • 打赏
  • 举报
回复
恩,感谢楼上两位,我已经实现了. 另外我还发现了一个要点:

就是不管原来网页是何编码方式,用了这个cmwap后都变成了utf8

另外,一点,联通的cmwap网关也是10.00.00.172 么? 如何获取cmwap的网关ip和端口呢?

两位回来拿分的时候,帮忙解答一下.
TaiJi1985 2011-04-10
  • 打赏
  • 举报
回复
call for answer.
TaiJi1985 2011-04-10
  • 打赏
  • 举报
回复
call for answer.

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧