某些Wifi連接,有時候出現100-continue的錯誤,apache http client說什麼協議錯誤,解決辦法:
Java代碼
- //關閉Expect:100-Continue握手
- //100-Continue握手需謹慎使用,因為遇到不支持HTTP/1.1協議的服務器或者代理時會引起問題
- httppost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
使用cmwap上網,cmwap本質是使用代理上網,用httpclient,很簡單,如下:
Java代碼
- HttpHost proxy = new HttpHost("10.0.0.172", 80);//設置cmwap代理
- httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
如果檢測呢,以下代碼可以檢測當前移動網絡的apn代理情況。
Java代碼
- ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
- if (connectivity != null) {
- // 獲取網絡連接管理的對象
- NetworkInfo info = connectivity.getActiveNetworkInfo();
-
- if (info != null && info.isConnected()) {
- // 判斷當前網絡是否已經連接
- if (info.getState() == NetworkInfo.State.CONNECTED) {
- if(info.getTypeName().equals("WIFI")){
-
- else{
- Uri uri = Uri.parse("content://telephony/carriers/preferapn");
- Cursor cr = context.getContentResolver().query(uri, null,null, null, null);
- while (cr != null && cr.moveToNext()) {
- // APN id
- @SuppressWarnings("unused")
- String id = cr.getString(cr.getColumnIndex("_id"));
- // APN name
- @SuppressWarnings("unused")
- String apn = cr.getString(cr.getColumnIndex("apn"));
- // do other things...
- String strProxy = cr.getString(cr.getColumnIndex("proxy"));
- String strPort = cr.getString(cr.getColumnIndex("port"));
- if(strProxy != null && !"".equals(strProxy)){
- Config.host = strProxy;
- Config.port = Integer.valueOf(strPort);
- }
-
- }
- }
- }
- }
現在很完美了,程序可以在cmnet,cmwap,以及wifi下完美運行。