packagecom.luo.util;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;importjava.util.UUID;importnet.sf.json.JSONObject;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.NameValuePair;importorg.apache.http.ParseException;importorg.apache.http.client.ClientProtocolException;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.client.methods.HttpUriRequest;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.protocol.HTTP;importorg.apache.http.util.EntityUtils;public classHttpXmlClient {public static String post(String url, Mapparams) {
DefaultHttpClient httpclient= newDefaultHttpClient();
String body= null;
HttpPost post=postForm(url, params);
body=invoke(httpclient, post);
httpclient.getConnectionManager().shutdown();returnbody;
}public staticString get(String url) {
DefaultHttpClient httpclient= newDefaultHttpClient();
String body= null;
HttpGet get= newHttpGet(url);
body=invoke(httpclient, get);
httpclient.getConnectionManager().shutdown();returnbody;
}private staticString invoke(DefaultHttpClient httpclient,
HttpUriRequest httpost) {
HttpResponse response=sendRequest(httpclient, httpost);
String body=paseResponse(response);returnbody;
}private staticString paseResponse(HttpResponse response) {
HttpEntity entity=response.getEntity();
String charset=EntityUtils.getContentCharSet(entity);
String body= null;try{
body=EntityUtils.toString(entity);
}catch(ParseException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}returnbody;
}private staticHttpResponse sendRequest(DefaultHttpClient httpclient,
HttpUriRequest httpost) {
HttpResponse response= null;try{
response=httpclient.execute(httpost);
}catch(ClientProtocolException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}returnresponse;
}private static HttpPost postForm(String url, Mapparams) {
HttpPost httpost= newHttpPost(url);
List nvps = new ArrayList();
Set keySet =params.keySet();for(String key : keySet) {
nvps.add(newBasicNameValuePair(key, params.get(key)));
}try{
httpost.setEntity(newUrlEncodedFormEntity(nvps, HTTP.UTF_8));
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}returnhttpost;
}public static voidmain(String[] args) {//获取access_token
Map params = new HashMap();
params.put("corpid","wx5f24fa0db1819ea2");
params.put("corpsecret","uQtWzF0bQtl2KRHX0amekjpq8L0aO96LSpSNfctOBLRbuYPO4DUBhMn0_v2jHS-9");
String xml= HttpXmlClient.post("https://qyapi.weixin.qq.com/cgi-bin/gettoken",params);
JSONObject jsonMap=JSONObject.fromObject(xml);
Map map = new HashMap();
Iterator it =jsonMap.keys();while(it.hasNext()) {
String key=(String) it.next();
String u=jsonMap.get(key).toString();
map.put(key, u);
}
String access_token= map.get("access_token");
System.out.println("access_token=" +access_token);//获取ticket
params.put("access_token",access_token);
xml= HttpXmlClient.post("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket",params);
jsonMap=JSONObject.fromObject(xml);
map= new HashMap();
it=jsonMap.keys();while(it.hasNext()) {
String key=(String) it.next();
String u=jsonMap.get(key).toString();
map.put(key, u);
}
String jsapi_ticket= map.get("ticket");
System.out.println("jsapi_ticket=" +jsapi_ticket);//获取签名signature
String noncestr =UUID.randomUUID().toString();
String timestamp= Long.toString(System.currentTimeMillis() / 1000);
String url="http://mp.weixin.qq.com";
String str= "jsapi_ticket=" + jsapi_ticket +
"&noncestr=" + noncestr +
"×tamp=" + timestamp +
"&url=" +url;//sha1加密
String signature =SHA1(str);
System.out.println("noncestr=" +noncestr);
System.out.println("timestamp=" +timestamp);
System.out.println("signature=" +signature);//最终获得调用微信js接口验证需要的三个参数noncestr、timestamp、signature
}/***@author:罗国辉
* @date: 2015年12月17日 上午9:24:43
* @description: SHA、SHA1加密
* @parameter: str:待加密字符串
*@return: 加密串
**/
public staticString SHA1(String str) {try{
MessageDigest digest=java.security.MessageDigest
.getInstance("SHA-1"); //如果是SHA加密只需要将"SHA-1"改成"SHA"即可
digest.update(str.getBytes());byte messageDigest[] =digest.digest();//Create Hex String
StringBuffer hexStr = newStringBuffer();//字节数组转换为 十六进制 数
for (int i = 0; i < messageDigest.length; i++) {
String shaHex= Integer.toHexString(messageDigest[i] & 0xFF);if (shaHex.length() < 2) {
hexStr.append(0);
}
hexStr.append(shaHex);
}returnhexStr.toString();
}catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}return null;
}
}