号码归属地查询---------------

来源:互联网 发布:华为云计算ie待遇 编辑:程序博客网 时间:2024/04/29 23:56

1,布局文件main

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <EditText        android:id="@+id/et_number"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ems="10"        android:inputType="number" >        <requestFocus />    </EditText>    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="query"        android:text="查询" /></LinearLayout>
2,src/xml的布局配置

<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">  <soap12:Body>    <getMobileCodeInfo xmlns="http://WebXml.com.cn/">      <mobileCode>$mobile</mobileCode>      <userID></userID>    </getMobileCodeInfo>  </soap12:Body></soap12:Envelope>

3,mainactivity

package com.example.querymobile;import com.itheima.service.QueryService;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {private EditText et_number;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);et_number=(EditText) this.findViewById(R.id.et_number);}  public void query(View view){    String number = et_number.getText().toString();    //调用业务方法获取手机号码归属地    try {String  address=QueryService.getAddres(number);Toast.makeText(this, "号码归属地为\n"+address, 1).show();     } catch (Exception e) {Toast.makeText(this, "访问失败", 0).show();    e.printStackTrace();}    }}

3,queryservice

package com.itheima.service;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import com.itheima.util.NumberParser;import android.view.View;import android.widget.EditText;public class QueryService {/** * 根据号码调用webservice获取手机号码归属地 * @param number 电话号码 * @return  * @throws Exception */    public static String getAddres(String number) throws Exception{       InputStream inputStream = QueryService.class.getClassLoader().getResourceAsStream("post.xml");       byte[] b=StreamTool.getbyte(inputStream);    String xml=new String(b);    String postxml = xml.replace("$mobile", number);        System.out.println(postxml);    String address = sendPostManage(postxml);return address;        }    public static String sendPostManage(String postxml) throws Exception{    String path="http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";    URL url=new URL(path);    HttpURLConnection conn= (HttpURLConnection) url.openConnection();    conn.setConnectTimeout(5000);    conn.setRequestMethod("POST");    conn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");    String content=postxml;    byte[] bytes = content.getBytes();    conn.setRequestProperty("Content-Lengt", bytes.length+"");    //允许http协议对外输出信息    conn.setDoOutput(true);    //把数据写给服务器    conn.getOutputStream().write(bytes);    if(conn.getResponseCode()==200){    InputStream in = conn.getInputStream();    /*byte[] getbyte = StreamTool.getbyte(in);    System.out.println(new String(getbyte)); //这里打印的是返回的xml */    return NumberParser.getXmlInfo(in);        }    return "访问网络错误出错";    }  }

4,streamtool工具

package com.itheima.service;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import android.graphics.Bitmap;public class StreamTool {   public static byte[] getbyte(InputStream in) throws Exception{ ByteArrayOutputStream out=new ByteArrayOutputStream(); byte [] b=new byte[1024]; int i=0; while((i=in.read(b))!=-1){ out.write(b, 0, i); } in.close(); out.flush();   return out.toByteArray();   }}

5,numberparser

package com.itheima.util;import java.io.InputStream;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import android.R.xml;import android.util.Xml;/*<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>  <getMobileCodeInfoResponse xmlns="http://WebXml.com.cn/">  <getMobileCodeInfoResult>13269012448:北京 北京 北京联通GSM卡</getMobileCodeInfoResult>  </getMobileCodeInfoResponse></soap:Body></soap:Envelope>*/public class NumberParser {   //获取xml手机的归属地public static String getXmlInfo(InputStream is) throws Exception{XmlPullParser parser = Xml.newPullParser();parser.setInput(is, "utf-8");int type=parser.getEventType();while(type!=XmlPullParser.END_DOCUMENT){switch (type) {case XmlPullParser.START_TAG:if("getMobileCodeInfoResult".equals(parser.getName())){return parser.nextText();}break;}type=parser.next();}return "查无此号";}}

6,Test

package com.itheima.test;import com.itheima.service.QueryService;import android.test.AndroidTestCase;public class TestWebService extends AndroidTestCase {   public void TestGetAddress() throws Exception{    QueryService.getAddres("13269012448");   }}



原创粉丝点击