java实现http连接服务器
package com.xj.http.util;
import java.io.ByteArrayOutputStream; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; /**
* 自定的HttpUtil类,用于客户端与服务器进行Http通讯
* 注*:需要导入GSON.jar包
* @author XuJie
*
*/
public class HttpUtil {
// 定义请求方式的常量
public static final String METHOD_POST = "POST";
public static final String METHOD_GET = "GET";
private static URL url;
private static Gson gson;
public HttpUtil() {
// TODO Auto-generated constructor stub
}
static {
gson = new Gson();
}
/**
* 获取服务器返回的原始数据(最好时JSON数据)
*
* @param params
* 填写请求的参数
* @param encode
* 字节编码
* @param path
* 请求的URL路径
* @param method
* 请求方式
* @return
*/
public static String getMessage(Map params, String encode,
String path, String method) {
try {
url = new URL(path);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 作为StringBuffer初始化的字符串
StringBuffer buffer = new StringBuffer();
try {
if (params != null && !params.isEmpty()) {
for (Map.Entry entry : params.entrySet()) {
// 完成转码操作
buffer.append(entry.getKey())
.append("=")
.append(URLEncoder.encode(entry.getValue(), encode))
.append("&");
}
// 删除掉最有一个&
buffer.deleteCharAt(buffer.length() - 1);
}
HttpURLConnection urlConnection = (HttpURLConnection) url
.openConnection();
urlConnection.setConnectTimeout(5000);// 设置超时时间
urlConnection.setRequestMethod(method);// 设置请求方式
urlConnection.setDoInput(true);// 表示从服务器获取数据
urlConnection.setDoOutput(true);// 表示向服务器写数据
// 获得上传信息的字节大小以及长度
byte[] mydata = buffer.toString().getBytes();
// 表示设置请求体的类型是文本类型
urlConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
urlConnection.setRequestProperty("Content-Length",
String.valueOf(mydata.length));
// 获得输出流,向服务器输出数据
OutputStream outputStream = urlConnection.getOutputStream();
outputStream.write(mydata, 0, mydata.length);
outputStream.close();
// 获得服务器响应的结果和状态码
int responseCode = urlConnection.getResponseCode();
if (responseCode == 200) {
return changeInputStream(urlConnection.getInputStream(), encode);
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
/**
* 返回Object类型的List集合
*
* @param params
* 请求参数
* @param encode
* 请求编码
* @param path
* 请求路径
* @param method
* 请求方式
* @param obj
* 转换的实体类型
* @return
*/
public static List