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號(hào)碼的歸屬地信息:"+PhoneNumberInfo.findAddress(?"這里傳入號(hào)碼")); ????????}?catch?(Exception?e)?{ ????????????Log.d("QY",?"查詢失敗"+e.toString()); ????????}