实现功能:匹配A表中是否B中的手机号码,如果 没有就从B查询出来,然后把所查询到的手机号码拿到HTTP://WWW。IP138.COM查询其归属地城市,区号等,把得到的值再插入A表!
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class HttpClientTutorial {
private static String url = "http://www.ip138.com:8080/search.asp?mobile=1375828&action=mobile&B1=%B2%E9+%D1%AF";
public static void main(String[] args) throws SQLException {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);
// method.setRequestHeader("POST","/search.asp HTTP/1.1");
method.setRequestHeader("Accept"," image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,");
method.setRequestHeader("Referer"," http://www.ip138.com:8080/search.asp");
method.setRequestHeader("Accept-Language","zh-cn");
method.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
method.setRequestHeader("Accept-Encoding","gzip, deflate");
method.setRequestHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
method.setRequestHeader("Host","www.ip138.com:8080");
// method.setRequestHeader("Content-Length","45");
method.setRequestHeader("Connection","Keep-Alive");
method.setRequestHeader("Cache-Control","no-cache");
// method.setRequestHeader("Cookie","rtime=2; ltime=1210316485984; cnzz_eid=94280797-; cnzz_a396332=3;ASPSESSIONIDSACATRTT=MEMCJOMBMNDMPAODCNFPLEIA");
Connection conn = dbConn.getConn();
String sql="select distinct left(desttermid,7) from submitsms_log5 a where left(a.desttermid,7) not in (select mseg from UT_COMM_MOBILE_SECTION)";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()) {
String Mseg="";
Mseg = rs.getString(1);
if(Mseg!=null&&Mseg.trim().length()!=0){
Mseg = rs.getString(1);
NameValuePair[] data = { new NameValuePair("action", "mobile"),
new NameValuePair("mobile",Mseg)};
method.setRequestBody(data);
// System.out.println(Mseg);
try {
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
//System.err.println("Method failed: " + method.getStatusLine());
}
byte[] responseBody = method.getResponseBody();
String htmlPage = new String(responseBody);
// System.out.println("htmlPage="+htmlPage); //打印出源码
int temppoint=htmlPage.indexOf("您查询的手机号码段");
int str1=htmlPage.indexOf("卡号归属地");
int str2=htmlPage.indexOf("卡 类 型");
int str3=htmlPage.indexOf("区 号");
int str4=htmlPage.indexOf("邮 编");
Mseg=htmlPage.substring(temppoint+56, temppoint+63);
String prov="";//省份
String city="";//城市
String cardtype="";//卡类型
String regcode="";//区号
String ecity="";//城市拼音
String pc="";
if(str2-88<=str1+60){
prov = htmlPage.substring(str1+52, str1+54);
// city=htmlPage.substring(str1+60,str2-88 ); 当是未知的时候没有城市这个
cardtype=htmlPage.substring(str2+62,str2+64);
regcode=htmlPage.substring(str3+42,str4-69);//
ecity=CnToSpell.getFullSpell(city);//把城市名称转换成拼音!
}else {
//prov = htmlPage.substring(str1+52, str1+54);
//city=htmlPage.substring(str1+60, str2-88);
pc=htmlPage.substring(str1+52,str2-88);//省份和城市字符串
prov =pc.substring(0, pc.lastIndexOf(" "));
city =pc.substring(pc.lastIndexOf(" ")+6,pc.length());//+6加的是HTML空格的长度
cardtype=htmlPage.substring(str2+62,str2+68);
regcode=htmlPage.substring(str3+42,str4-69);
ecity=CnToSpell.getFullSpell(city);//把城市名称转换成拼音!
}
System.out.println("pc="+pc);
System.out.println("Mseg="+Mseg);
System.out.println("prov="+prov);
System.out.println("city="+city);
System.out.println("cardtype="+cardtype);
System.out.println("regcode="+regcode);
System.out.println("ecity="+ecity);
execInsertLog(Mseg, prov, city, cardtype, regcode);
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
method.releaseConnection();
}
}//判断MSEG是否为空.
}
}
public static void execInsertLog(String Mseg,String prov,String city,String cardtype,String regcode){
try {
Connection conn = dbConn.getConn();
String sql="insert into UT_COMM_MOBILE_SECTION(Mseg,prov,city,cardtype,regcode) values(?,?,?,?,?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1,Mseg);
stmt.setString(2,prov);
stmt.setString(3,city);
stmt.setString(4,cardtype);
stmt.setString(5,regcode);
stmt.execute();
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
HttpClient是Apache基金会开发的一个HTTP客户端库,用于在Java应用程序中执行HTTP请求。这个库提供了丰富的功能,包括HTTP/1.1和HTTP/2协议支持、连接管理、重试策略、缓存机制等,使得开发者可以方便地进行网络通信...
httpclient运行需要的三个jar包 HttpClient 可以在http://jakarta.apache.org/commons/httpclient/downloads.html下载 HttpClient 用到了 Apache Jakarta common 下的子项目 logging,你可以从这个地址...
运用最新Jsoup技术开发,比httClient容易多了
首先,我们需要创建一个WinForm窗口,包含一个按钮(用于启动下载或上传操作)、一个进度条控件(ProgressBar)以及可能的文本框或者标签来显示相关信息。在VS2010中,可以通过设计视图直接拖放这些控件到窗体上。 ...
Java爬虫是编程领域中一个有趣的主题,它允许开发者通过编写代码来自动抓取和处理互联网上的信息。在这个场景中,我们关注的是使用Java来爬取并下载一千张美女图片。我们将深入探讨Java爬虫的基本原理,HttpClient库...
API文件| 发布| ... API文件| 发布| 参与安装安装了add add的运行:$ cargo add http-client安全对于非Wasm...请查看我们的“供稿”指南,并查看其中的一些问题:标为“良好的第一期”的问题标为“需要帮助”的问题Li Li
在网上寻找之后,发现是使用HttClient来进行响应的操作,起初尝试多次依然不能传递参数和传递文件,后来发现时因为当使用HttpClient时,不能使用request.getParameter()对普通参数进行获取,而要在服务器端使用...
以下是一个使用WebClient的POST请求示例: ```csharp public static string WebClientPost(string url, string postDataStr) { var client = new WebClient(); client.Headers[HttpRequestHeader.ContentType] = ...
本文将详细介绍一个名为"简单的网站检测工具"的程序,它能够自动检测网站状态并重新启动Web服务器,以保持服务的正常运行。 这个工具的主要功能在于其定时扫描机制。它会定期(例如每分钟、每小时)访问预先设定的...
commons-httpclient-2