java实现手机号码归属地查询功能

  1 package com.rocky.test;
  2 
  3 import java.io.InputStream;
  4 import java.io.OutputStream;
  5 import java.io.OutputStreamWriter;
  6 import java.net.URL;
  7 import java.net.URLConnection;
  8 
  9 import javax.xml.parsers.DocumentBuilder;
 10 import javax.xml.parsers.DocumentBuilderFactory;
 11 
 12 import org.w3c.dom.NodeList;
 13 public class Moblie {
 14     /**
 15      * 
 16      * 获得soap请求
 17      * 
 18      * @param mobileCode
 19      * 
 20      * @return
 21      */
 22 
 23     private static String getSoapRequest(String mobileCode) {
 24 
 25         StringBuilder sb = new StringBuilder();
 26 
 27         sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"
 28                         + "\n"
 29 
 30                         + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
 31                         + " "
 32 
 33                         + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""
 34                         + " "
 35 
 36                         + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
 37                         + "\n"
 38 
 39                         + "<soap:Body>" + "\n"
 40 
 41                         + "<getMobileCodeInfo" + " "
 42                         + "xmlns=\"http://WebXml.com.cn/\">" + "\n"
 43 
 44                         + "<mobileCode>" + mobileCode + "</mobileCode>" + "\n"
 45 
 46                         + "<userID></userID>" + "\n"
 47 
 48                         + "</getMobileCodeInfo>" + "\n"
 49 
 50                         + "</soap:Body>" + "\n"
 51 
 52                         + "</soap:Envelope>"
 53 
 54                 );
 55 
 56         return sb.toString();
 57 
 58     }
 59 
 60     /**
 61      * 
 62      * 发送soap请求到服务器,并接受返回数据
 63      * 
 64      * @param mobileCode
 65      * 
 66      * @return
 67      */
 68 
 69     private static InputStream getSoapInputStream(String mobileCode) {
 70 
 71         try {
 72 
 73             String soap = getSoapRequest(mobileCode);
 74 
 75             if (soap == null)
 76 
 77                 return null;
 78 
 79             URL url = new URL(
 80                     "http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx");
 81 
 82             URLConnection conn = url.openConnection();
 83 
 84             conn.setUseCaches(false);
 85 
 86             conn.setDoInput(true);
 87 
 88             conn.setDoOutput(true);
 89 
 90             conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
 91 
 92             conn.setRequestProperty("Content-Length", Integer.toString(soap
 93                     .length()));
 94 
 95             conn.setRequestProperty("SOAPAction",
 96                     "http://WebXml.com.cn/getMobileCodeInfo");
 97 
 98             OutputStream os = conn.getOutputStream();
 99 
100             OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
101 
102             osw.write(soap);
103 
104             osw.flush();
105 
106             osw.close();
107 
108             InputStream is = conn.getInputStream();
109 
110             return is;
111 
112         } catch (Exception e) {
113 
114             e.printStackTrace();
115 
116             return null;
117 
118         }
119 
120     }
121 
122     public static String getMobileNoTrack(String mobileCode) {
123 
124         try {
125 
126             org.w3c.dom.Document document = null;
127 
128             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
129 
130             dbf.setNamespaceAware(true);
131 
132             InputStream is = getSoapInputStream(mobileCode);
133 
134             DocumentBuilder db = dbf.newDocumentBuilder();
135 
136             document = db.parse(is);
137 
138             NodeList nl = document
139                     .getElementsByTagName("getMobileCodeInfoResult");
140 
141             StringBuffer sb = new StringBuffer();
142 
143             for (int i = 0; i < nl.getLength(); i++) {
144 
145                 org.w3c.dom.Node n = nl.item(i);
146 
147                 if (n.getFirstChild().getNodeValue().equals("手机号码错误")) {
148 
149                     sb = new StringBuffer("#");
150 
151                     System.out.println("手机号码输入有误");
152 
153                     break;
154 
155                 }
156 
157                 sb.append(n.getFirstChild().getNodeValue() + "\n");
158 
159             }
160 
161             is.close();
162 
163             return sb.toString();
164 
165         } catch (Exception e) {
166 
167             e.printStackTrace();
168 
169             return null;
170 
171         }
172         
173 
174     }
175     public static void main(String[] args) {
176     //    System.out.println(Moblie.getSoapRequest("13272303204"));
177         //System.out.println(Moblie.getSoapInputStream("13226678785"));
178         System.out.println(Moblie.getMobileNoTrack("13226678785"));
179     }
180     
181 
182 }

 

转载于:https://www.cnblogs.com/java-rocky/archive/2013/01/29/2882005.html

适配机型/应用平台 Java/S40 适用机型:诺基亚 7610S; 7510a; 7310c; 7070; 6103; 5000; 3120c; 2680s; 2600c; 1680c; 5220xm; 3600s; 7360; 7380; 6070; 8800 SE; 5300; 6088; 8800 Sirocco; 6086; 8600 Luna; 3500c; 7900; 6131i; 6263; 7500; 8800 Arte; 8600; 7390; 7373; 7370; 6555; 6288; 6280; 6275; 6267; 6165; 6151; 6136; 6133; 6131; 6126; 6125; 6111; 6085; 6080; 6060; 6021; 5070; 3500; 3110; 3109; 2760; 2630; 2626; 2610; 6301; 5610xm; 5310xm; 6108; 7260; 6270; 6030; 6020; 3220; 3120; 2865; 6300; 6234; 6233; 5200; 6500c; 6500s; 7600; 7210; 7200; 6800; 6650; 6610; 6230; 6220; 6100; 5100; 3300; 3200; 3100 摩托罗拉 E398; EM25; EM28; K3; KRZR; L6; L6g; L800t; Pebl U3; RAZR maxx V1100; ROKR W5; SLVR L6i; SLVR L7; SLVR L71; SLVR L72; V3; V300; V303; V500; V501; V600; VE75; W206; W230; W270; W360; W380; W388; W395; W396; W510; W6; ZN200; w231 索尼爱立信 C702; C902; G502; K660i; R306c; T280i; T303c; W350c; W760c; Z550c; Z558c; Z600; Z608; Z610i; Z780 三星 D528; D808; D828; D838; D848; D888; D908; D908i; D988; E218; E258; E428; E598; E848; E878; E898; E908; E958; F218; F258; F268; F278; F308; F488E; G608; G618; G800; G808E; J608; J618; J708; M318; M618; M628; Soulb; U308; U600; U608; U708E; U800; U808E; U900; U908E; W579; W629; X838 联想 E520; P705; P719; P790; P960; P990; S320; S530; S6; S600; S7; S70; S9; V80; i510; i758; i760; i817; i827; i880; i906; i909; i966; i968; p609; s90; s96 夏新 A510; A530; A616; A636; E3; E5; M515; M690 天语 A615; A902; A905; A906; A908; A909; A930; B922; C280; C800; D705; E60
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值