亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android 使用HTTPClient調用Web請求(查詢手機

系統 2304 0

?????? Android通過Apache HttpClient調用網上提供的WebService服務,獲取電話號碼所屬的區域。調用的服務的網址:

http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo

??????

?????? 以前用2.2 訪問WebService沒有問題,到3.0上訪問出現 android.os.NetworkOnMainThreadException

找了資料經過實踐,解決方法如下:

?????

    ///在Android2.2以后必須添加以下代碼
		//本應用采用的Android4.0
		//設置線程的策略
		 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()   
         .detectDiskReads()   
         .detectDiskWrites()   
         .detectNetwork()   // or .detectAll() for all detectable problems   
         .penaltyLog()   
         .build());   
		//設置虛擬機的策略
		  StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()   
		         .detectLeakedSqlLiteObjects()   
		         .detectLeakedClosableObjects()   
		         .penaltyLog()   
		         .penaltyDeath()   
		         .build());
  

?

?

  
  

?

似乎是3.0在網絡上做了更加嚴格的限制,更多的查詢API上的 StrictMode 。。。。

項目結構如下:

Android 使用HTTPClient調用Web請求(查詢手機號碼區域)

運行結果如下:

?

? Android 使用HTTPClient調用Web請求(查詢手機號碼區域)

?

實現代碼如下:

?

    package com.easyway.android.query.telephone;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
 * 利用網上提供的WebService使用
 * HttpClient運用之手機號碼歸屬地查詢
 * 參看WebService地址:
 *    http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo
 *    
 *    可以采用
 *      SOAP1.1,SOAP1.2,HTTP GET,HTTP POST
 * 
 * @author longggangbai
 * 
 */
public class AndroidQueryTelCodeActivity extends Activity {
	private EditText phoneSecEditText;
	private TextView resultView;
	private Button queryButton;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		///在Android2.2以后必須添加以下代碼
		//本應用采用的Android4.0
		//設置線程的策略
		 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()   
         .detectDiskReads()   
         .detectDiskWrites()   
         .detectNetwork()   // or .detectAll() for all detectable problems   
         .penaltyLog()   
         .build());   
		//設置虛擬機的策略
		  StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()   
		         .detectLeakedSqlLiteObjects()   
		         .detectLeakedClosableObjects()   
		         .penaltyLog()   
		         .penaltyDeath()   
		         .build());
		
		super.onCreate(savedInstanceState);
		//設置界面布局
		setContentView(R.layout.main);
		//初始化界面
        initView();
        //設置各種監聽
		setListener();
	}
	/**
	 * 界面相關的各種設置
	 */
	private void initView() {
		//手機號碼編輯器
		phoneSecEditText = (EditText) findViewById(R.id.phone_sec);
		//
		resultView = (TextView) findViewById(R.id.result_text);
		queryButton = (Button) findViewById(R.id.query_btn);
	}
    /**
     * 設置各種事件監聽的方法
     */
	private void setListener() {
		queryButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 手機號碼(段)
				String phoneSec = phoneSecEditText.getText().toString().trim();
				// 簡單判斷用戶輸入的手機號碼(段)是否合法
				if ("".equals(phoneSec) || phoneSec.length() < 7) {
					// 給出錯誤提示
					phoneSecEditText.setError("您輸入的手機號碼(段)有誤!");
					//獲取焦點
					phoneSecEditText.requestFocus();
					// 將顯示查詢結果的TextView清空
					resultView.setText("");
					return;
				}
				// 查詢手機號碼(段)信息
				getRemoteInfo(phoneSec);
			}
		});
	}

	/**
	 * 手機號段歸屬地查詢
	 * 
	 * @param phoneSec
	 *            手機號段
	 */
	public void getRemoteInfo(String phoneSec) {
		// 定義待請求的URL
		String requestUrl = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo";
		// 創建HttpClient實例
		HttpClient client = new DefaultHttpClient();
		// 根據URL創建HttpPost實例
		HttpPost post = new HttpPost(requestUrl);

		List<NameValuePair> params = new ArrayList<NameValuePair>();
		// 設置需要傳遞的參數
		params.add(new BasicNameValuePair("mobileCode", phoneSec));
		params.add(new BasicNameValuePair("userId", ""));
		try {
			// 設置URL編碼
			post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
			// 發送請求并獲取反饋
			HttpResponse response = client.execute(post);

			// 判斷請求是否成功處理
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				// 解析返回的內容
				String result = EntityUtils.toString(response.getEntity());
				// 將查詢結果經過解析后顯示在TextView中
				resultView.setText(filterHtml(result));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 使用正則表達式過濾HTML標記
	 * 
	 * @param source
	 *            待過濾內容
	 * @return
	 */
	private String filterHtml(String source) {
		if (null == source) {
			return "";
		}
		return source.replaceAll("</?[^>]+>", "").trim();
	}
}

  

?

?

界面代碼main.xml如下:

    <?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:paddingTop="5dip"  
    android:paddingLeft="5dip"  
    android:paddingRight="5dip"  
    >  
    <TextView  
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        android:text="手機號碼(段):"  
    />  
    <EditText android:id="@+id/phone_sec"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:inputType="textPhonetic"  
        android:singleLine="true"  
        android:hint="例如:1398547(手機號碼前8位)"  
    />  
    <Button android:id="@+id/query_btn"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_gravity="right"  
        android:text="查詢"  
    />  
    <TextView android:id="@+id/result_text"  
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"   
        android:layout_gravity="center_horizontal|center_vertical"  
    />  
</LinearLayout>  

  

??

全局文件AndroidManifest.xml如下:

?

?

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.easyway.android.query.telephone"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="14" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".AndroidQueryTelCodeActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET" />  

</manifest>
  

??

?

?

?

?

?

Android 使用HTTPClient調用Web請求(查詢手機號碼區域)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天槽天天槽天天槽 | 亚洲精品性夜夜夜 | 久久亚洲一区二区 | 中国国产一国产一级毛片视频 | 一级香蕉视频在线观看 | 欧美性精品不卡在线观看 | 欧美一级毛片欧美毛片视频 | 在线观看亚洲成人 | 亚洲男人的天堂久久香蕉 | www.av毛片| 两性影院 | 91久久精品 | 99热在线看 | 亚洲综合成人在线 | 女女女女女女bbbbbb级毛片 | 亚洲综合色dddd26 | 精品久久久99大香线蕉 | 久久精品国产影库免费看 | 国产成人夜间影院在线观看 | 97久久免费视频 | 欧美操操 | 特黄十八岁大片 | 一本久草 | 黄色在线观看网站 | 日本一区中文字幕 | 久久中文亚洲国产 | 国产观看精品一区二区三区 | 亚州精品视频 | 久久国产高清 | 亚洲国产精品一区二区久久hs | 91在线网 | 日韩欧美第一页 | 目韩一区二区三区系列片丶 | 欧美一区二区在线观看视频 | 国产精品视频永久免费播放 | 国产精品自线在线播放 | 国产在线色视频 | 日本高清免费毛片久久看 | 亚洲国产欧美国产综合一区 | 国产高清专区 | 欧美成人免费网在线观看 |