电话号码归属查询

MainActivity.java代码

public class MainActivity extends Activity {
	
	private EditText et_number;
	private TextView tv_info;
	private MobileService service;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        et_number = (EditText) findViewById(R.id.et_number);
        tv_info = (TextView) findViewById(R.id.info);
        //
        service = new MobileService();
    }
    
    //查询事件
    public void query(View v){
    	String number = et_number.getText().toString();
    	if(TextUtils.isEmpty(number)){
    		Toast.makeText(this, "号码不能为空", 1).show();
    	}else{
    		try {
    			//查询返回信息
				String info = service.query(number);
				if(info == null){
					Toast.makeText(this, "查询归属地失败", 1).show();
				}else{
					tv_info.setText(info);
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				Toast.makeText(this, "查询归属地失败", 1).show();
			}
    	}
    }
}


2.MobileService.java代码

public class MobileService {

	//查询电话号码归属
	public String query(String number) throws Exception {
		
		String path = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
		URL url = new URL(path);
		//1.打开连接并设置连接超时时间和请求方式
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setConnectTimeout(5000);
		conn.setRequestMethod("POST");
		
		//2获得soap文件并将string替换number
		String xml = getXml();
		xml = xml.replace("string", number);
		byte [] entity = xml.getBytes();
		
		//3.允许连接输出
		conn.setDoOutput(true);
		//4.设置请求属性(httpheader)
		conn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
		conn.setRequestProperty("Content-Length", entity.length+"");
		
		//5.获得输出对象,并输出数据
		OutputStream os = conn.getOutputStream();
		os.write(entity);
		os.close();
		
		//6.判断是否请求成功,若成功则返回查询信息
		if(conn.getResponseCode()==200){
			InputStream is = conn.getInputStream();
			String info = parserXml(is);
			return info;
		}
		return null;
	}
       //解析xml文件,获取查询信息
	private String parserXml(InputStream is) throws XmlPullParserException, IOException {
		XmlPullParser parser = Xml.newPullParser();
		parser.setInput(is,"UTF-8");
		int eventtype = parser.getEventType();
		while(eventtype!=XmlPullParser.END_DOCUMENT){
			switch(eventtype){
			case XmlPullParser.START_TAG:
				if("getMobileCodeInfoResult".equals(parser.getName())){
					return parser.nextText();
				}
				break;
			default :
				break;
			}
			eventtype = parser.next();
		}
		return null;
	}

	private String getXml() throws IOException {
		InputStream is = getClass().getClassLoader().getResourceAsStream("soap.xml");
		ByteArrayOutputStream os = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int len = 0;
		while((len=is.read(buffer))!=-1){
			os.write(buffer,0,len);
		}
		String xml = os.toString();
		os.close();
		is.close();
		return xml;
	}
}

3.xml布局文件略

4.AndroidManifest.xml文件部分内容

     <uses-sdk android:minSdkVersion="8"/>
     <uses-permission android:name="android.permission.INTERNET"/>

注:Android:minSdkVersion=“8”,若是真机调试,则一定是8,(比8低的版本我没试过),否则获取不了互联网的数据。同时最好不要加上android:targetSdkVersion=“”;有可能在真机测试不了(模拟器可以),我就是因为加了这个,模拟器可以获取网络数据,而真机获取数据失败,我搞了半天才发现。具体是为什么?我也不知道。英文好的可以去找google看看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q1121674367

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值