package cn.com.chinautrust.ssoserver.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
/**
* GET and POST requests (note: Chinese characters may be garbled)
* @author yq
*
*/
public class HttpSendUtil {
/**
* Send a GET request to the specified URL
*
* @param url
* Send Requested URL
* @param param
* Request parameter, the request parameter should be in the form of name1=value1&name2=value2.
* @return the response result of the remote resource represented by the URL
*/
public static String sendGet(String url, String param) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// Open a connection to the URL
URLConnection connection = realUrl.openConnection();
// Set common request properties
connection.setRequestProperty("accept", "*/*");
connection .setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// establish the actual connection
connection .connect();
// Get all response header fields
Map<String, List<String>> map = connection.getHeaderFields();
// Traverse all response header fields
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// Define the BufferedReader input stream to read the URL's response
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()) );
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("An exception occurred when sending a GET request!" + e );
e.printStackTrace();
}
// use a finally block to close the input stream
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
/**
* Send a GET request to the specified URL
*
* @param url
* URL to send the request
* @param param
* Request parameter, the request parameter should be in the form of name1=value1&name2=value2.
* @return the response result of the remote resource represented by the URL
*/
public static String sendGet(String url) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url;
URL realUrl = new URL(urlNameString);
/ / Open the connection to the URL
URLConnection connection = realUrl.openConnection();
// Set common request properties
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// establish the actual connection
connection.connect();
// get all response header fields
Map<String, List<String>> map = connection.getHeaderFields();
// loop through all Response header field
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// Define the BufferedReader input stream to read the response from the URL
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("Send GET request An exception occurred!" + e);
e.printStackTrace();
}
// use a finally block to close the input stream
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
/**
* Send the request of the POST method to the specified URL
*
* @param url
* The URL to send the request
* @param param
* The request parameter, the request parameter should be in the form of name1=value1&name2=value2.
* The response result of the remote resource represented by @return
*/
public static String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url) ;
// Open connection to URL
URLConnection conn = realUrl.openConnection();
// Set common request properties
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// Required to send a POST request Set the following two lines
conn.setDoOutput(true);
conn.setDoInput(true);
// Get the output stream corresponding to the URLConnection object
out = new PrintWriter(conn.getOutputStream());
// Send request parameters
out.print(param) ;
// flush the buffer of the output stream
out.flush();
// define the BufferedReader input stream to read the response from the URL
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("An exception occurred when sending POST request!"+e);
e.printStackTrace();
}
//Use finally block to close output stream, input stream
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close( );
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
return result;
}
public static void main(String[] args) {
String url = "https://api.weibo.com/oauth2/access_token";
//The code in the param parameter column below is used up each time you must be regenerated, otherwise an error request
String param = "client_id = 2026242394 & client_secret = 92fb0d8fd7c80e6f48af9dd1566725b7 & grant_type = authorization_code & redirect_uri = HTTP: //192.168.214.169/sso2.2/wblogin/drawback_code&code=f33b46762a60c2e73d0bc57162f73a1f";
String = sendPost the Result (url, param);
// System.out.println("======result:"+result+"==============");
JSONObject obj = JSONObject.fromObject(result);
String access_token = obj .getString("access_token");
String uid = obj.getString("uid");
String param1 = "access_token="+access_token+"&uid="+uid;
// System.out.println("======param1:"+param1+"================");
String GET_USER_INFO = "https://api.weibo.com/2/users/show.json";
String info = HttpSendUtil.sendGet(GET_USER_INFO, param1);
// System.out.println("=========info:"+info+"====================");
}
}