java/android查詢手機(jī)固話歸屬地、GSM卡信息程序?qū)崿F(xiàn)
Model.xml
$mobile
PhoneNumberInfo.java
package?com.zontin.android.util;
import?java.io.InputStream;
import?java.io.OutputStream;
import?java.net.HttpURLConnection;
import?java.net.URL;
import?org.xmlpull.v1.XmlPullParser;
import?android.util.Xml;
public?class?PhoneNumberInfo?{
public?static?String?findAddress(String?mobile)?throws?Exception?{
????????InputStream?is?=?PhoneNumberInfo.class.getClassLoader()
????????????????.getResourceAsStream("Model.xml");
????????byte[]?data?=?StreamTool.readStream(is);
????????String?xml?=?new?String(data,?"UTF-8");
????????String?soap?=?xml.replaceAll("\$mobile",?mobile);
????????byte[]?result?=?soap.getBytes("UTF-8");
????????String?path?=?"http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
????????URL?url?=?new?URL(path);
????????HttpURLConnection?conn?=?(HttpURLConnection)?url.openConnection();
????????conn.setRequestMethod("POST");
????????conn.setDoOutput(true);
????????conn.setConnectTimeout(5?*?1000);
?
????????conn.setRequestProperty("Content-Type",
????????????????"application/soap+xml;?charset=utf-8");
????????conn.setRequestProperty("Content-Length",?String.valueOf(result.length));
????????OutputStream?os?=?conn.getOutputStream();
????????os.write(result);
????????os.flush();
????????os.close();
?
????????InputStream?isSocp?=?conn.getInputStream();
????????return?parse(isSocp);
????}
?
????public?static?String?parse(InputStream?is)?throws?Exception?{
????????XmlPullParser?parser?=?Xml.newPullParser();
????????parser.setInput(is,?"UTF-8");
????????int?event?=?parser.getEventType();
????????while?(event?!=?XmlPullParser.END_DOCUMENT)?{
????????????switch?(event)?{
????????????case?XmlPullParser.START_TAG:
????????????????if?("getMobileCodeInfoResult".equals(parser.getName()))?{
????????????????????return?parser.nextText();
????????????????}
????????????????break;
????????????}
????????????event?=?parser.next();
????????}
????????return?null;
????}
}
StreamTool.java
package?com.zontin.android.util;
import?java.io.ByteArrayOutputStream;
import?java.io.InputStream;
public?class?StreamTool?{
/**
?????*?讀取輸入流數(shù)據(jù)
?????*
?????*?@param?is
?????*?@return
?????*?@throws?Exception
?????*/
?
????public?static?byte[]?readStream(InputStream?is)?throws?Exception?{
????????ByteArrayOutputStream?os?=?new?ByteArrayOutputStream();
????????byte[]?buffer?=?new?byte[2048];
????????int?len?=?0;
????????while?((len?=?is.read(buffer))?!=?-1)?{
????????????os.write(buffer,?0,?len);
????????}
????????is.close();
????????return?os.toByteArray();
????}
}以上準(zhǔn)備好現(xiàn)在就可以調(diào)用了:
try?{
???????? Log.d("QY",?"XXX號碼的歸屬地信息:"+PhoneNumberInfo.findAddress(?"這里傳入號碼"));
????????}?catch?(Exception?e)?{
????????????Log.d("QY",?"查詢失敗"+e.toString());
????????}




