java获取手机号归属地

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

代码直接复制就OK

posted @ 2017-01-11 16:34  疯子~  阅读(785)  评论(0编辑  收藏  举报