寫一個程序用來查詢手機號碼的歸屬地(使用的是HttpURLConnection的get提交方式)

需求 : 

寫一個程序用來獲取手機號碼的歸屬地


思路 :

在網絡上有一個web服務器,專門用來提供手機號的歸屬地信息
  我們要做的就是訪問該服務器,提供手機號,然後獲取服務器發來的響應碼
  從響應碼中解析出需要的歸屬地信息




- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 

需求 : 

首先自定義個getGSDFromNet方法,用來獲取手機號的歸屬地

步驟  :

1,準備好一個URL,用來將手機號發送給服務器

2,通過URL對象獲得個HttpURLConnection連接

3,設置好連接的請求方式,連接超時時間,讀取超時時間,然後開始連接

4,得到連接後的提示碼

5,如果提示碼爲200,則表示連接成功,開始獲取服務器發回的相應碼

6,將響應碼字符串中的歸屬地信息提取出來


代碼 :

   <span style="white-space:pre">	</span> //自定義個方法,用來獲取手機號的歸屬地
	protected String getGSDFromNet(String phone) {
		try {
			//1,準備好一個URL,用來將手機號發送給服務器
			URL url = new URL("http://webservice.webxml.com.cn//WebServices/MobileCodeWS.asmx/ge" +
					<span style="white-space:pre">	</span>"tMobileCodeInfo?mobileCode="+phone+"&userID=");
			//2,通過URL對象獲得個HttpURLConnection連接對象
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			//3,設置好連接的請求方式,連接超時時間,讀取超時時間,然後開始連接服務器
			conn.setRequestMethod("GET");
			conn.setReadTimeout(5000);
			conn.setConnectTimeout(5000);
			conn.connect();
			//4,得到連接後的提示碼
			int responseCode = conn.getResponseCode();
			if(responseCode == 200)//5,如果提示碼爲200,則表示連接成功,開始獲取服務器發回的相應碼
			{
				InputStream is = conn.getInputStream();
				BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
				StringBuffer sb = new StringBuffer();
				String text ;
				while((text = br.readLine()) != null)
				{
					sb.append(text+"/r/n");
				}
				text = sb.toString();
				br.close();
				//6,將響應碼字符串中的歸屬地信息提取出來
				int start = text.indexOf("\">")+2;
				int end = text.indexOf("</");
				String gSD = text.substring(start, end);
				//將獲得的歸屬地信息返回
				return gSD;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - -

需求 :

寫一個程序用來獲取手機號碼的歸屬地

步驟 :

步驟 :

 * 1,定義好佈局文件和權限的添加.
 * 2,在主線程中獲取需要的控件
 * 3,開啓一個子線程,在子線程中執訪問網絡的操作,將請求碼發送過去,獲取服務器發送回來的響應碼,
 * 開始解析響應碼,得到需要的信息.
 * 4,.
調用 Activity 的 runOnUiThread方法,直接在子線程中修改界面




注意  :

				//runOnUIThread是Activity的方法,作用是讓run方法中的操作運行在主線程中
				runOnUiThread(new Runnable() {
					public void run() {
						//修改界面
						textView.setText(gSD);
					}
				});

runOnUiThread方法是Activity中的方法,作用是讓run()中的操作運行在主線程中,這樣就無需使用Handler機制,就可以直接進行界面的修改了,

實際上修改界面的操作仍然是運行在主線程中.

代碼 :

public class MainActivity extends Activity {
    private EditText editText;
    private TextView textView;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //2,在主線程中獲取需要的控件
        editText = (EditText) findViewById(R.id.editText);
        textView = (TextView) findViewById(R.id.textView);
    }
    
    //點擊事件
    public void onClick(View v)
    {
    	final String phone = editText.getText().toString();
    	//3,開啓一個子線程,在子線程中執訪問網絡的操作,將請求碼發送過去,獲取服務器發送回來的響應碼,開始解析相應碼,得到需要的信息.
    	new Thread(new Runnable() {
			
			public void run() {
				//調用getgSDFromNet方法,來獲取手機號的歸屬地信息
				final String gSD = getGSDFromNet(phone);
				//4,調用 Activity 的 runOnUiThread方法,直接在子線程中修改界面
				//runOnUIThread是Activity的方法,作用是讓run方法中的操作運行在主線程中
				runOnUiThread(new Runnable() {
					public void run() {
						//修改界面
						textView.setText(gSD);
					}
				});
			}
		}).start();
    }
}

注意  :

runOnUiThread(new Runnable() {
public void run() {
//修改界面
textView.setText(gSD);
}
});

runOnUiThread方法是Activity的方法,作用是讓run()中的操作運行在主線程中,這樣就無需使用Handler機制,就可以直接進行界面的修改了,

實際上修改界面的操作仍然是運行在主線程中.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章