import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.security.cert.CertificateException;
import java.util.Date;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.log4j.Logger;
import com.tjsoft.util.StringUtil;
public class ClientUtil {
private static Logger log = Logger.getLogger(ClientUtil.class);
/**
* 登录 获取token
*
* @return
* @throws Exception
*/
@SuppressWarnings("deprecation")
public static String login() throws Exception {
log.info("info:"+new Date().toLocaleString()+"开始执行" + ClientUtil.class + "类 login()方法.");
String url = ServiceUrlUtil.LOGIN;
String json = "{\"loginId\":\"" + ServiceUrlUtil.SERVICE_LOGINID.trim()
+ "\"," + "\"password\":\""
+ ServiceUrlUtil.SERVICE_PASSWORD.trim() + "\","
+ "\"auth_key\":\"" + ServiceUrlUtil.SERVICE_AUTHKEY.trim()
+ "\"" + "}";
//System.out.println("json----------------->"+json);
String result = requestForStringUsePost(url, json);
//System.out.println("result----------------->"+result);
String eCode = JSONObject.fromObject(result).getString("eCode");
String eMsg = JSONObject.fromObject(result).getString("eMsg");
String token = JSONObject.fromObject(result).getString("token");
//System.out.println("eCode----->"+eCode+",eMsg---------->"+eMsg+",token------------->"+token);
log.info("info:"+new Date().toLocaleString()+"执行" + ClientUtil.class + "类 login()方法:" + eCode + "-"
+ eMsg + ",返回值:" + token);
return token;
}
/**
* 注销登录
*
* @param access_token
* @return
* @throws Exception
*/
@SuppressWarnings("deprecation")
public static String logout(String token) throws Exception {
log.info("info:"+new Date().toLocaleString()+"开始执行" + ClientUtil.class + "类 login()方法.");
String url = ServiceUrlUtil.LOGOUT+"?token="+token;
String result = ClientUtil.requestForStringUseGet(url);
String eCode = JSONObject.fromObject(result).get("eCode").toString();
String eMsg = JSONObject.fromObject(result).get("eMsg").toString();
//System.out.println("eCode----->"+eCode+",eMsg---------->"+eMsg);
log.info("info:"+new Date().toLocaleString()+"执行" + ClientUtil.class + "类 logout()方法:" + eCode + "-"
+ eMsg + ".");
return result;
}
/**
* 这里需要传入机构ID 查询机构下的窗口的时候 需要传入该机构编号 然后返回accessToken
*
* @throws Exception
*/
/*
* public static String getSessionOrgCode(String orgCode) throws Exception {
* String url = "http://sxsl.sz.gov.cn/sxgl/c/api.pmi/login"; String json = "
* {\"key\":\"" + ServiceUrlUtil.APP_KEY + "\",\"secret\":\"" +
* ServiceUrlUtil.APP_SECRET + "\",\"loginname\":\"" +
* ServiceUrlUtil.ACCOUNT + "\", " + " \"pwd\":\"" + ServiceUrlUtil.PASSWORD +
* "\",\"dept\":\"" + orgCode + "\"}"; String result =
* ClientUtil.requestForStringUsePost(url, json); Object data =
* JSONObject.fromObject(result).get("data"); String access_token ="";
* if(data!=null){ access_token =
* JSONObject.fromObject(data).getString("access_token"); } return
* access_token; }
*/
/**
* 调用http请求,返回string结果数据
*
* @param req
* json格式请求参数
* @param fi
* @return
*/
public static String requestForStringUseGet(String url) throws Exception {
String returnStr = "";
HttpResponse httpResponse = null;
DefaultHttpClient httpClient = null;
httpClient = new DefaultHttpClient();// http客户端
enableSSL(httpClient);
httpClient.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS,
false);
// 连接超时
httpClient.getParams().setParameter(
CoreConnectionPNames.CONNECTION_TIMEOUT, new Integer(ServiceUrlUtil.TIME_OUT.trim()));
// 请求超时
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,
30000);
httpClient.getParams().setParameter(
CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
// 请求地址
HttpGet httpget = new HttpGet(url);
@SuppressWarnings("unused")
Date sDate = new Date();
httpResponse = httpClient.execute(httpget);
// 请求结果处理
HttpEntity entity = httpResponse.getEntity();
if (entity != null) {
InputStream content = entity.getContent();
returnStr = convertStreamToString(content);
}
// 释放连接
if (httpClient != null) {
httpClient.getConnectionManager().shutdown();
httpClient = null;
}
return returnStr;
}
/**
* 调用http请求,返回string结果数据
*
* @param req
* json格式请求参数
* @param fi
* @return
*/
public static String requestForStringUsePost(String url, String json)
throws Exception {
String returnStr = "";
HttpResponse httpResponse = null;
DefaultHttpClient httpClient = null;
@SuppressWarnings("unused")
Date sDate = new Date();
// 请求参数
httpClient = new DefaultHttpClient();// http客户端
enableSSL(httpClient);
httpClient.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS,
false);
// 连接超时
httpClient.getParams().setParameter(
CoreConnectionPNames.CONNECTION_TIMEOUT, new Integer(ServiceUrlUtil.TIME_OUT.trim()));
// 请求超时
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,
30000);
httpClient.getParams().setParameter(
CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
// 请求地址
HttpPost httppost = new HttpPost(url);
if (StringUtil.isNotBlank(json)) {
StringEntity stringEntity = new StringEntity(json, "utf-8");
httppost.setEntity(stringEntity);
} else {
StringEntity stringEntity = new StringEntity("{}", "utf-8");
httppost.setEntity(stringEntity);
}
httppost.setHeader("Content-type", "application/json");
httpResponse = httpClient.execute(httppost);
// 请求结果处理
HttpEntity entity = httpResponse.getEntity();
if (entity != null) {
InputStream content = entity.getContent();
returnStr = convertStreamToString(content);
}
// 释放连接
if (httpClient != null) {
httpClient.getConnectionManager().shutdown();
httpClient = null;
}
return returnStr;
}
/**
* 将流转换为字符串
*
* @param is
* @return
* @throws UnsupportedEncodingException
*/
public static String convertStreamToString(InputStream is)
throws UnsupportedEncodingException {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,
"utf-8"));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
@SuppressWarnings("deprecation")
private static void enableSSL(DefaultHttpClient httpclient) {
// 调用ssl
try {
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, new TrustManager[] { truseAllManager }, null);
SSLSocketFactory sf = new SSLSocketFactory(sslcontext);
sf
.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Scheme https = new Scheme("https", sf, 443);
httpclient.getConnectionManager().getSchemeRegistry().register(
https);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 重写验证方法,取消检测ssl
*/
private static TrustManager truseAllManager = new X509TrustManager() {
public void checkClientTrusted(
java.security.cert.X509Certificate[] arg0, String arg1)
throws CertificateException {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] arg0, String arg1)
throws CertificateException {
}
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
};
/**
* 测试
*
* @Description: TODO
* @param args
* void
* @throws Exception
*/
@SuppressWarnings("static-access")
public static void main(String[] args) throws Exception {
ClientUtil util = new ClientUtil();
String token = util.login();
System.out.println(token);
//String token = "VCRt853rOjH_aHh-1-fLLOQdW-wcu-pyLh2LT3jjP2cJ3SCF1qDp!-366310036!1384824151531";
util.logout(token);
}
}
分享到:
相关推荐
java实现http接口服务端、客户端代码例子。使用jar(commons-codec-1.3.jar、commons-httpclient-3.0.1.jar、commons-logging-1.1.1.jar)
HttpClient模拟客户端传输文件是Java开发中的常见需求,尤其在与服务器进行交互时,例如上传用户数据、图片或者其他文件。在这个过程中,我们通常会使用POST请求将文件作为请求体发送到服务器。 首先,我们需要引入...
在Java编程中,HttpClient库是Apache提供的一款强大的HTTP客户端工具,用于执行HTTP请求,包括GET、POST、PUT等多种HTTP方法。在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站...
Java HttpClient 是一个强大的HTTP客户端库,它允许Java开发者在应用程序中发送HTTP请求并接收响应,广泛应用于Web服务的调用、API接口测试以及自动化脚本等场景。在Java项目中,使用HttpClient可以实现与Web服务器...
在Java中,我们可以使用Keytool工具管理证书,但`InstallCert.java`提供了一种更方便的方式,尤其在自动化环境中。通过运行这个程序,你可以连接到一个需要客户端认证的服务器,获取其证书,并将其安装到本地的Java...
7. 异步操作:HttpClient提供了异步API,可以在处理HTTP请求时避免阻塞主线程,提高应用的响应速度。 二、在Eclipse中使用HttpClient 1. 添加依赖:首先,需要在Eclipse项目中添加HttpClient的依赖。如果你使用的...
httpclient常用封装工具 doGet(String url, Map, String> param) doPost(String url, Map, String> param) doPostJson(String url, String json)
在本篇文章中,我们将深入探讨如何使用Java HttpClient来抓取网页数据以及如何打包成jar文件。 **一、Java HttpClient简介** Java HttpClient 是 Apache HttpClient 库的一部分,它提供了丰富的功能,包括连接管理...
在进行错误处理时,HttpClient提供了丰富的异常类型,帮助开发者识别和解决与网络通信相关的问题。例如,`IOException`用于处理网络连接失败,`NoHttpResponseException`表示服务器没有响应,`HttpException`则通常...
在处理动态内容的网页时,HttpClient可以方便地发送带有特定头信息的请求,模拟浏览器行为,绕过一些安全机制,如用户代理检测、加密或反爬虫策略。 ### 动态数据获取难点 动态数据通常指的是那些需要执行...
本篇文章将深入介绍如何使用HttpClient作为客户端调用Web服务。 首先,我们要明确什么是HTTP消息。HTTP消息是客户端和服务器间进行通信的基本单位,它包括请求消息和响应消息。请求消息由请求行、请求头、空行和...
在IT行业中,XML(eXtensible Markup Language)是一种用于数据交换的标准格式,尤其在Web服务和客户端-服务器通信中广泛应用。本示例探讨的是如何使用HTTPClient库在客户端发送XML报文到服务器端,且报文通过POST...
在处理Web应用程序时,有时我们需要保持用户的登录状态,即SESSION状态。这通常涉及到Cookie管理,因为服务器通过Cookie来跟踪客户端的会话。下面我们将详细探讨如何在Java中使用HttpClient来实现这一目标。 首先,...
在Java编程环境中,HttpClient库是Apache HTTP Components项目的一部分,它为开发者提供了强大的HTTP客户端功能,可以用来发送HTTP请求并接收响应。在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到...
JAVA HttpClient是Apache软件基金会提供的一个开源实现HTTP客户端的Java库,能够帮助开发者轻松地与HTTP服务器进行交互。在实际项目中,我们经常需要使用HttpClient来发送POST请求,以便与服务器进行数据交换。但是...
java httpClient 工具类 java httpClient 工具类 java httpClient 工具类 java httpClient 工具类 java httpClient 工具类 java httpClient 工具类 java httpClient 工具类 java httpClient 工具类 java httpClient ...
Java中的HttpClient是一个强大的HTTP客户端库,常用于与服务器进行数据交互。在本实例中,我们将讲解如何使用HttpClient来传输XML字符串。首先,我们需要确保引入了正确的依赖,包括Apache HttpClient、HttpMime、...
在Java编程领域,客户端-服务器(Client-Server)程序是一种常见的架构模式,它涉及两个主要组件:客户端应用程序和服务器端应用程序。在这个“Java客户端服务器程序学习笔记”中,我们将深入探讨这一主题,包括如何...
在Java编程中,HttpClient是一个非常重要的库,常用于执行HTTP请求。当涉及到HTTPS接口调用时,HttpClient可以处理加密通信,确保数据传输的安全性。在这个主题中,我们将深入探讨如何在Java中使用HttpClient来实现...
本篇文章将详细探讨如何在Java环境中创建和使用Web服务客户端,以"weather"为例。 一、Web服务基础 Web服务通常通过SOAP(简单对象访问协议)或REST(Representational State Transfer)进行通信。SOAP是基于XML的...