Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android客戶端判斷服務器是否開啟 HttpHostException解決方案

Android客戶端判斷服務器是否開啟 HttpHostException解決方案

編輯:關於Android編程


Android判斷服務器是否開啟,試了很多方法都不行(若server未開啟會卡在HttpResponse那),有人說高版本的Android程序不允許在主線程中訪問網絡(主線程中可以讀寫網絡流)有待於驗證。


方法一:

在xxxActivity的onCreate()方法中添加

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

這兩句代碼在我寫的Activity中本來就添加著,這個方法沒有解決我的問題,go on.....


solution 2:

package siat.hpc.ngb.utils;

import java.io.IOException;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

import android.os.AsyncTask;
import android.util.Log;

public class ConnServer extends AsyncTask{
	
	/**
	 * 
	 * 判斷服務器是否開啟
	 * @param  path   網絡服務器地址
	 * @return 
	 * 服務器開啟
	 * 服務器未開啟
	 */
	
	@Override
	protected String doInBackground(String... params) {
		// TODO Auto-generated method stub
		
		
		try {
			HttpGet get = new HttpGet(params[0]);
Log.i("doInBack1...",params[0]);
			HttpResponse response = new DefaultHttpClient().execute(get);
			
Log.i("doInBack2...",params[0]);
			if(response.getStatusLine().getStatusCode() == 200){
				return "success";
			} 
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "ClientError";
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "ServerError";
		}
		return "success";
	}
}

在需要的地方直接調用:

if(new ConnServer().execute(AppConstant.BASE_URL).equals("success")){ 
。。。
。。AppConstant.BASE_URL是一個http的字符串:如http://172.21.6.233:8080/


}

refer:http://stackoverflow.com/questions/19162272/httpclient-executehttppost-on-android-4-2-error

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved