和JAVA网络xx差不多,你懂得!免费用户每天只能使用100次!不过你要是搞个for循环1000次 一时半会它们阻止不了
JAVA webservice 想用免费的无限次数的点击:http://my.oschina.net/jgy/blog/86305
package wiselong;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Mobile {
/**
* 获得soap请求
* @param mobileCode 手机号码
* @return soap请求
* @author JIA-G-Y
*/
private static String getSoapRequest(String mobileCode){
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"+"\n"
+"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""+" "
+"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""+" "
+"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"+"\n"
+"<soap:Body>"+"\n"
+"<getMobileCodeInfo"+" "+"xmlns=\"http://WebXml.com.cn/\">"+"\n"
+"<mobileCode>"+mobileCode+"</mobileCode>"+"\n"
+"<userID></userID>"+"\n"
+"</getMobileCodeInfo>"+"\n"
+"</soap:Body>"+"\n"
+"</soap:Envelope>"
);
return sb.toString();
}
/**
* 发送soap请求到服务器,并接受返回数据
* @param mobileCode 手机号码
* @return 返回的数据
* @author JIA-G-Y
*/
private static InputStream getSoapInputStream(String mobileCode){
try {
String soap = getSoapRequest(mobileCode);
if(soap == null)
return null;
URL url = new URL("http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx");
URLConnection conn = url.openConnection();
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
conn.setRequestProperty("Content-Length", Integer.toString(soap.length()));
conn.setRequestProperty("SOAPAction", "http://WebXml.com.cn/getMobileCodeInfo");
OutputStream os = conn.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8");
osw.write(soap);
osw.flush();
osw.close();
InputStream is = conn.getInputStream();
return is;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 查询手机号码归属地
* @param mobileCode 手机号码
* @return
* @author JIA-G-Y
*/
public static String getMobileNoTrack(String mobileCode){
try {
org.w3c.dom.Document document = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
InputStream is = getSoapInputStream(mobileCode);
DocumentBuilder db = dbf.newDocumentBuilder();
document = db.parse(is);
NodeList nodeList = document.getElementsByTagName("getMobileCodeInfoResult");
StringBuffer sb = new StringBuffer();
for(int i = 0; i < nodeList.getLength(); i++){
Node node = nodeList.item(i);
sb.append(node.getFirstChild().getNodeValue());
}
is.close();
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String tel = "13524799521";
Pattern pattern = Pattern.compile("1\\d{10}");
Matcher matcher = pattern.matcher(tel);
if(matcher.matches()){
System.err.println(getMobileNoTrack(tel));
}else{
System.err.println("手机号码格式错误");
}
}
}