import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.Map;
import org.apache.log4j.Logger;
/**
* @描述:
* @作者: nie
* @版本: 1.0
* @创建日期: 2017年12月6日
* @创建时间: 下午3:01:49
*/
public class RequestHelper {
private static Logger logger = Logger.getLogger(RequestHelper.class);
/**
* @描述:
* @作者: nie
* @时间: 2017年12月7日 下午7:29:52
* @param url
* @return
*/
public static Map<String, String> getResultMapForQQ(String url) {
String urlRsStr = getResultOfString(url, "utf-8");
//QQ返回错误的结果以callback(json)的形式
if ( urlRsStr.startsWith("callback") ) {
urlRsStr = urlRsStr.replace("callback(", "");
urlRsStr = urlRsStr.substring(0, urlRsStr.length() - 2);
}
String jsonStr = "";
//将"key=val,key=val"的字段转成json(需更换正则匹配)
if ( !urlRsStr.trim().startsWith("{") ) {
String[] arr = urlRsStr.split("&");
StringBuffer temp = new StringBuffer("{");
for (int i = 0; i < arr.length; i++) {
String[] arr2 = arr[i].split("=");
temp.append("\"").append(arr2[0]).append("\":").append("\"").append(arr2[1]).append("\",");
if ( i == arr.length - 1 ) {
temp = new StringBuffer(temp.toString().substring(0, temp.length() - 1));
temp.append("}");
}
}
jsonStr = temp.toString();
}
if ( StringHelper.isEmpty(jsonStr) )
return null;
return (Map<String, String>) JsonHelper.getObjectByJSON(jsonStr);
}
/**
* @描述: 获取webservice结果字符串,默认utf-8编码读取
* @作者: nie
* @时间: 2017年12月6日 下午3:17:43
* @param url
* @return
*/
public static String getResultOfString(String url) {
return getResultOfString(url, "utf-8");
}
/**
* @描述: 获取webservice结果字符串
* @作者: nie
* @时间: 2017年12月6日 下午3:17:43
* @param url,character
* @return
*/
public static String getResultOfString(String url, String character) {
//1.创建URL对象,打开URL连接,并保存InputStream对象
URL urlObj = null;
HttpURLConnection conn = null;
InputStream in = null;
try {
urlObj = new URL(url);
conn = (HttpURLConnection) urlObj.openConnection();
conn.setDoInput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "*/*");
conn.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
conn.setRequestProperty("Content-Language", "en-US");
conn.setRequestProperty("Accept-Language", "zh-CN");
conn.setRequestProperty("Content-type", "text/html");
conn.connect();
in = conn.getInputStream();
}
catch (UnknownHostException e) {
logger.error("地址解析失败,返回\"\"!错误信息:" + e);
return "";
}
catch (Exception e) {
logger.error("获取webService失败,返回\"\"!错误信息:" + e);
return "";
}
finally {
if ( null != urlObj )
urlObj = null;
if ( null != conn )
conn = null;
}
//2.读取返回的InputStream
StringBuffer sb = new StringBuffer();
if ( null == in ) {
return "";
}
InputStreamReader isreader = null;
try {
isreader = new InputStreamReader(in, character);
}
catch (UnsupportedEncodingException e) {
logger.error("编码解析失败,返回\"\"!错误信息:" + e);
return "";
}
BufferedReader bufferedRead = new BufferedReader(isreader);
String temp = null;
try {
while ((temp = bufferedRead.readLine()) != null)
sb.append(temp);
}
catch (Exception e) {
logger.error("读取流失败,返回\"\"!错误信息:" + e);
return "";
}
finally {
if ( null != isreader ) {
try {
isreader.close();
}
catch (IOException e) {
logger.error("关闭InputStreamReader失败!" + e);
}
isreader = null;
}
if ( null != bufferedRead ) {
try {
bufferedRead.close();
}
catch (IOException e) {
logger.error("关闭BufferedReader失败!" + e);
}
bufferedRead = null;
}
if ( null != in ) {
try {
in.close();
}
catch (IOException e) {
logger.error("关闭inputStream失败!" + e);
}
in = null;
}
}
return sb.toString();
}
}