package com;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Scanner;
import javax.net.ssl.X509TrustManager;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
/**
* @author 刘显安
* 不使用任何SDK实现新浪微博Oauth授权并实现发微薄小Demo
* 日期:2012年11月11日
*/
public class Test
{
static String clientId="462782576";//你的应用ID462782576 3107088717
static String clientSecret="d4acc900e839483bb1e29fc3f1aa8db8";//你的应用密码d4acc900e839483bb1e29fc3f1aa8db8 bfd9d978773bae5cf64ffaa0cc181195
static String redirectUri="http://www.suqian.gov.cn/publish/main/3/218/20130326150935053461649/index.html";//你在应用管理中心设置的回调页面
public static void main(String[] args) throws Exception
{
// testHttps();//测试
// //第一步:访问授权页面获取授权
// System.out.println("请打开你的浏览器,访问以下页面,登录你的微博账号并授权:");
// String url = "https://api.weibo.com/oauth2/authorize?client_id="+clientId+"&response_type=code&redirect_uri="+redirectUri+"&forcelogin=true";
// Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
// //第二步:获取AccessToken
// System.out.println("请将授权成功后的页面地址栏中的参数code:");
// String code=new Scanner(System.in).next();
// String accessToken = getAccessToken(code);
// String[] accessTokens = accessToken.split(",");
// //第三步:发布一条微博
// System.out.println("请输入上面返回的值中accessToken的值:");
// String userInformation = getUserInformation(accessTokens[3].split(":")[1].replaceAll("\"", "").replaceAll("}", ""), accessTokens[0].split(":")[1].replaceAll("\"", ""));
// System.out.println(userInformation);
// url = "https://api.weibo.com/2/account/end_session.json?access_token="+accessTokens[0].split(":")[1].replaceAll("\"", "");
String url = "http://localhost:8081/dzj/api/event_seach.action?keyword=我选择的是";
System.out.println(getUrl(url));
}
/**
* 测试能否正常访问HTTPS打头的网站,
*/
public static void testHttps()
{
try
{
trustAllHttpsCertificates();//设置信任所有的http证书
URL url=new URL("https://api.weibo.com/oauth2/default.html");
URLConnection con=url.openConnection();
con.getInputStream();
System.out.println("恭喜,访问HTTPS打头的网站正常!");
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 以Post方式访问一个URL
* @param url 要访问的URL
* @param parameters URL后面“?”后面跟着的参数
*/
public static String postUrl(String url,String parameters)
{
StringBuffer sb = new StringBuffer("");
try
{
trustAllHttpsCertificates();//设置信任所有的http证书
URLConnection conn = new URL(url).openConnection();
conn.setDoOutput(true);// 这里是关键,表示我们要向链接里注入的参数
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());// 获得连接输出流
out.write(parameters);
out.flush();
out.close();
// 到这里已经完成了,开始打印返回的HTML代码
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return sb.toString();
}
public static String getUrl(String url)
{
StringBuffer sb = new StringBuffer("");
try
{
trustAllHttpsCertificates();//设置信任所有的http证书
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("GET");
conn.setDoOutput(true);// 这里是关键,表示我们要向链接里注入的参数
conn.setDoInput(true);
conn.setUseCaches(false);
// 到这里已经完成了,开始打印返回的HTML代码
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return sb.toString();
}
/**
* 获取AccessToken
* @param code 在授权页面返回的Code
*/
public static String getAccessToken(String code)
{
String url="https://api.weibo.com/oauth2/access_token";
String parameters="client_id=" +clientId+"&client_secret=" +clientSecret+
"&grant_type=authorization_code" +"&redirect_uri=" +redirectUri+"&code="+code;
return postUrl(url, parameters);
}
/**
* 利用刚获取的AccessToken发布一条微博
* @param text 要发布的微博内容
* @param accessToken 刚获取的AccessToken
*/
public static String getUserInformation(String uid,String accessToken)
{
//String url="https://api.weibo.com/2/statuses/update.json";
String url = "https://api.weibo.com/2/users/show.json?access_token="+accessToken+"&uid="+uid;
return getUrl(url);
}
/**
* 设置信任所有的http证书(正常情况下访问https打头的网站会出现证书不信任相关错误,所以必须在访问前调用此方法)
* @throws Exception
*/
private static void trustAllHttpsCertificates() throws Exception
{
javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
trustAllCerts[0] = new X509TrustManager()
{
@Override
public X509Certificate[] getAcceptedIssuers()
{
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException
{}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException
{}
};
javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, null);
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
private static String getDoc() throws Exception{
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
Element hslElement = root.addElement("huilan_stru_list");
Element hsitem1 = hslElement.addElement("huilan_stru_item");
Element c1 = hsitem1.addElement("content");
c1.setText("");
Element ic1 = hsitem1.addElement("item_cnname");
ic1.setText("");
Element ie1 = hsitem1.addElement("item_enname");
ie1.setText("");
Element t1 = hsitem1.addElement("tid");
t1.setText("");
//2
Element hsitem2 = hslElement.addElement("huilan_stru_item");
Element c2 = hsitem2.addElement("content");
c2.setText("");
Element ic2 = hsitem2.addElement("item_cnname");
ic2.setText("");
Element ie2 = hsitem2.addElement("item_enname");
ie2.setText("");
Element t2 = hsitem2.addElement("tid");
t2.setText("");
//3
Element hsitem3 = hslElement.addElement("huilan_stru_item");
Element c3 = hsitem3.addElement("content");
c3.setText("");
Element ic3 = hsitem3.addElement("item_cnname");
ic3.setText("");
Element ie3 = hsitem3.addElement("item_enname");
ie3.setText("");
Element t3 = hsitem3.addElement("tid");
t3.setText("");
//4
Element hsitem4 = hslElement.addElement("huilan_stru_item");
Element c4 = hsitem4.addElement("content");
c4.setText("");
Element ic4 = hsitem4.addElement("item_cnname");
ic4.setText("");
Element ie4 = hsitem4.addElement("item_enname");
ie4.setText("");
Element t4 = hsitem4.addElement("tid");
t4.setText("");
//5
Element hsitem5 = hslElement.addElement("huilan_stru_item");
Element c5 = hsitem5.addElement("content");
c5.setText("");
Element ic5 = hsitem5.addElement("item_cnname");
ic5.setText("");
Element ie5 = hsitem5.addElement("item_enname");
ie5.setText("");
Element t5 = hsitem5.addElement("tid");
t5.setText("");
//6
Element hsitem6 = hslElement.addElement("huilan_stru_item");
Element c6 = hsitem6.addElement("content");
c6.setText("");
Element ic6 = hsitem6.addElement("item_cnname");
ic6.setText("");
Element ie6 = hsitem6.addElement("item_enname");
ie6.setText("");
Element t6 = hsitem6.addElement("tid");
t6.setText("");
//7
Element hsitem7 = hslElement.addElement("huilan_stru_item");
Element c7 = hsitem7.addElement("content");
c7.setText("");
Element ic7 = hsitem7.addElement("item_cnname");
ic7.setText("");
Element ie7 = hsitem7.addElement("item_enname");
ie7.setText("");
Element t7 = hsitem7.addElement("tid");
t7.setText("");
//8
Element hsitem8 = hslElement.addElement("huilan_stru_item");
Element c8 = hsitem8.addElement("content");
c8.setText("");
Element ic8 = hsitem8.addElement("item_cnname");
ic8.setText("");
Element ie8 = hsitem8.addElement("item_enname");
ie8.setText("");
Element t8 = hsitem8.addElement("tid");
t8.setText("");
//9
Element hsitem9 = hslElement.addElement("huilan_stru_item");
Element c9 = hsitem9.addElement("content");
c9.setText("");
Element ic9 = hsitem9.addElement("item_cnname");
ic9.setText("");
Element ie9 = hsitem9.addElement("item_enname");
ie9.setText("");
Element t9 = hsitem9.addElement("tid");
t9.setText("");
//10
Element hsitem10 = hslElement.addElement("huilan_stru_item");
Element c10 = hsitem10.addElement("content");
c10.setText("");
Element ic10 = hsitem10.addElement("item_cnname");
ic10.setText("");
Element ie10 = hsitem10.addElement("item_enname");
ie10.setText("");
Element t10 = hsitem10.addElement("tid");
t10.setText("");
//11
Element hsitem11 = hslElement.addElement("huilan_stru_item");
Element c11 = hsitem11.addElement("content");
c11.setText("");
Element ic11 = hsitem11.addElement("item_cnname");
ic11.setText("");
Element ie11 = hsitem11.addElement("item_enname");
ie11.setText("");
Element t11 = hsitem11.addElement("tid");
t11.setText("");
//12
Element hsitem12 = hslElement.addElement("huilan_stru_item");
Element c12 = hsitem12.addElement("content");
c12.setText("");
Element ic12 = hsitem12.addElement("item_cnname");
ic12.setText("");
Element ie12 = hsitem12.addElement("item_enname");
ie12.setText("");
Element t12 = hsitem12.addElement("tid");
t12.setText("");
//13
Element hsitem13 = hslElement.addElement("huilan_stru_item");
Element c13 = hsitem13.addElement("content");
c13.setText("");
Element ic13 = hsitem13.addElement("item_cnname");
ic13.setText("");
Element ie13 = hsitem13.addElement("item_enname");
ie13.setText("");
Element t13 = hsitem13.addElement("tid");
t13.setText("");
//14
Element hsitem14 = hslElement.addElement("huilan_stru_item");
Element c14 = hsitem14.addElement("content");
c14.setText("");
Element ic14 = hsitem14.addElement("item_cnname");
ic14.setText("");
Element ie14 = hsitem14.addElement("item_enname");
ie14.setText("");
Element t14 = hsitem14.addElement("tid");
t14.setText("");
c1.setText("");
ic1.setText("发生时间");
ie1.setText("time");
t1.setText("2012323213123123");
//2
c2.setText("4");
ic2.setText("经度");
ie2.setText("jingdu");
t2.setText("34234234234234");
//3
c3.setText("9");
ic3.setText("级数");
ie3.setText("jishu");
t3.setText("5345345345");
//4
c4.setText("7");
ic4.setText("符号");
ie4.setText("fuhao");
t4.setText("553453453535345345");
//5
c5.setText("6");
ic5.setText("深度");
ie5.setText("shendu");
t5.setText("546456456");
//6
c6.setText("8");
ic6.setText("震中英文名");
ie6.setText("english");
t6.setText("43534534543");
//7
c7.setText("9");
ic7.setText("epiMap");
ie7.setText("epiMap");
t7.setText("45345345435");
//8
c8.setText("6");
ic8.setText("histMap");
ie8.setText("histmap");
t8.setText("543543543");
//9
c9.setText("4");
ic9.setText("histgt5Map");
ie9.setText("histgt5Map");
t9.setText("34234234");
//10
c10.setText("4");
ic10.setText("cmtfile");
ie10.setText("cmtfile");
t10.setText("45345345");
//11
c11.setText("4");
ic11.setText("mtMap");
ie11.setText("mtMap");
t11.setText("534534543");
//12
c12.setText("7");
ic12.setText("sacfile");
ie12.setText("sacfile");
t12.setText("45345345435");
//13
c13.setText("6");
ic13.setText("纬度");
ie13.setText("weid");
t13.setText("5645645654");
//14
c14.setText("6");
ic14.setText("参考位置");
ie14.setText("cankaoweizhi");
t14.setText("45345345");
//文章内容
String doc = document.asXML();
return doc;
}
}
联系客服