`
nbtlxx
  • 浏览: 255143 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

使用HttpClient组件查询手机号码归属地

阅读更多
这个类的功能:
1. 利用httpClient开源组件,简化访问web
2. 利用sogou的开放查询接口,进行手机号码归谁查询

注意此处用的HttpClient的版本号为3.1
目前新版本有些api接口做了调整,暂时没有时间测试

/**
 * 
 */
package demo;


import java.io.IOException;
import java.util.Scanner;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

/**
 * @author sean
 * 
 * @since 2009/05/09
 * 
 * 使用HttpClient组件,连接web
 * 查询手机号码归属地
 * 服务器端是由sogou开发的查询模块
 * 
 */
public class SimpleHttpClient {

	static HttpMethod method = null;			
	static String reponse = null;
	static String phone;						//需要查询的手机号码
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		
		//此处简单处理,循环获得用户的电话号码输入
		do {
			System.out.println("输入您的电话号码");
			phone = scanner.next();
			query();
			System.out.println("******************************");
		} while (true);
	}

	/**
	 * 进行查询
	 * 1. 初始化httpclient对象
	 * 2. 设置host, port, protocol
	 * 3. 获得postMethod
	 * 4. client.executeMethod(),执行查询工作
	 */
	private static void query() {
		// TODO Auto-generated method stub
		String host = "www.sogou.com";
		//实例化一个httpClient对象
		HttpClient client = new HttpClient();
		
		//设置host, port, protocol
		client.getHostConfiguration().setHost(host, 80, "http");

		method = getPostMethod(phone);
		
		try {
			client.executeMethod(method);
			System.out.println(method.getStatusLine());

			reponse = method.getResponseBodyAsString();
		} catch (HttpException e) {
			System.out.println("httpexception");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// 释放当前连接
		method.releaseConnection();

		// 根据html源码提取需要的手机号码归谁地信息
		if (reponse.contains("手机号")) {
			int beginIndex = reponse.indexOf("手机号:");
			int endIndex = reponse.indexOf("用户");

			reponse = reponse.substring(beginIndex, endIndex);
			reponse = reponse.replace("<p>", "");
			reponse = reponse.replace("</p>", "");
			System.out.println(reponse);
		} else {
			System.out.println("error");
		}

	}

	/**
	 * 使用 POST 方式提交数据
	 * 1. 获得post对象,需要设置相对路径作为
	 * 
	 * @return
	 */
	private static HttpMethod getPostMethod(String phone) {
		PostMethod post = new PostMethod("/features/mobile.jsp");
		
		//类似hashmap的key, value, 成对保存在simcard中
		NameValuePair simcard = new NameValuePair("query", phone);
		post.setRequestBody(new NameValuePair[] { simcard });
		return post;
	}
}

分享到:
评论

相关推荐

    C#开发查询归属地COM组件

    开发这样的组件时,首先需要设计接口,定义查询归属地的方法,例如`GetPhoneLocation(string phoneNumber)`,该方法接收手机号码作为输入,返回包含归属地信息的对象。接着,我们需要实现这个接口,处理实际的查询...

    手机归属地查询器(JAVA版)

    在手机归属地查询的场景下,这个URL通常是由服务提供商提供的API接口,我们通过将手机号码作为参数传递给这个接口,然后接收返回的数据,解析出所需的信息。 为了使用HTTPClient,我们需要引入Apache HttpClient的...

    java版手机归属地查询带界面

    在Java编程领域,开发一个手机归属地查询的程序通常涉及到网络请求、数据解析以及用户界面设计等技术。本文将详细探讨这些知识点。 首先,"java版手机归属地查询带界面"意味着我们需要创建一个具备图形用户界面...

    Android 手机归属地查询程序.zip源码资源下载

    这个程序允许用户查询任意手机号码的归属地信息,通常用于个人娱乐或简单的信息查询。以下是对这个项目的一些关键知识点的详细说明: 1. **Android开发环境**:首先,这个程序是用Android Studio进行开发的,它是一...

    Android例子源码简单的安卓归属地查询源码.zip

    这个Android例子源码是关于如何实现一个简单的手机归属地查询功能的应用程序。它利用了webservice.webxml.com.cn提供的服务来获取数据,帮助用户查询来电或输入的手机号码所属的地区信息。源码的编译环境是Android ...

    安卓归属地查询

    【安卓归属地查询】是一个基于Android平台的简单应用,用于查询手机号码的归属地信息。这个源码项目展示了如何在Android环境下实现这一功能,对于学习Android编程和理解网络请求、数据解析等技术有一定帮助。 首先...

    Android开发之WebService介绍

    例如,假设我们想要使用一个提供手机号码归属地查询的WebService,WSDL文档会告诉我们服务的URL、需要传递的参数类型、预期的返回值等关键信息。 在Android中,调用SOAP WebService通常涉及到以下步骤: 1. 创建...

    Jakarta Commons Online Bookshelf

    1. **浏览网页与HttpClient**:介绍如何使用HttpClient组件进行网络请求,包括获取资源、解析响应等。 2. **文件上传与FileUpload**:详解FileUpload组件,教授用户如何处理HTTP POST请求中的文件上传。 3. **协议...

    org.apache.HTTP需要的jar包.zip

    在Web开发中,特别是在使用JSP、Servlet、以及基于Spring(SSM)、Struts(SSH)等框架的项目中,HttpClient是不可或缺的一部分。它提供了丰富的功能,使得开发者能够方便地实现HTTP通信,包括GET、POST以及其他HTTP...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--数据库查询之归属地 |--数据库直接CURD |--数据提交无需权限 |--文件之从服务器下载 |--文件之拷贝文件至某个目录 |--文件之指定编码读写文件 |--文件之释放Assets下的文件到应用的File目录 |--文件之随机存储...

Global site tag (gtag.js) - Google Analytics