import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* http请求工具类:(主要是从业务处理服务器获取数据)
* @version v1.
* @date 2015-05-07
*/
public class HttpRequestUtil {
private static String json = "";
// public static String ADD_URL =
// "http://192.168.80.30/svn/static/data/device.list.txt";
// public static String ACCOUNT_LIST_HOST =
// "http://192.168.80.121/***/account_findAllListPage.action";
// 业务处理服务器的IP
// private static HttpURLConnection connection=null;
public static String PROTOCOL = "http";// 协议
public static String SERVER_IP = "192.168.80.200";// IP
public static Integer SERVER_PORT = 8888;// 端口78
// public static String SERVER_IP = "192.168.80.121";//IP
// public static int SERVER_PORT =-1;//端口78
/**
* 从业务处理服务器获取请求的方法--返回JSON
*
* @param protocol
* 使用的协议
* @param host
* 主机
* @param port
* 端口
* @param file
* 文件(路径)
* @return
* @throws IOException
*/
public static String getRequestGetData(String filePath) {
Map<String, String> map = ResovlePorperties.getService();
String server_ip = map.get("server_ip");
int server_port = Integer.valueOf(map.get("server_port"));
try {
URL url = new URL(PROTOCOL, server_ip, server_port, filePath);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 获取此 URL 连接的内容
// Post 请求不能使用缓存
connection.setUseCaches(false);
// 设置 HttpURLConnection的接收的文件类型
connection.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
System.out.println(" 请求 响应状态" + connection.getResponseCode());
System.out.println(" HTTP相应消息" + connection.getResponseMessage());
System.out.println(filePath);
if (connection.getResponseCode() == 500) {
json = SpliceJson.getStatusMessage(1, "网络异常,连接服务器失败!", 1, "",null);
} else if (connection.getResponseCode() == 304) {
json = SpliceJson
.getStatusMessage(1, "服务器没有数据返回!", 1, "", null);
} else if (connection.getResponseCode() == 400) {
json = SpliceJson.getStatusMessage(1, "请求数据不合法,或者超过请求频率限制!", 1,"", null);
} else if (connection.getResponseCode() == 40001) {
json = SpliceJson.getStatusMessage(1,
"数据返回类型设定错误,目前支持的类型有json/xml!", 1, "", null);
} else if (connection.getResponseCode() == 40002) {
json = SpliceJson.getStatusMessage(1, "请求的资源不存在,请检查API接口是否正确!",
1, "", null);
} else if (connection.getResponseCode() == 40003) {
json = SpliceJson.getStatusMessage(1, "请求的模块不存在!", 1, "", null);
} else if (connection.getResponseCode() == 40004) {
json = SpliceJson.getStatusMessage(1, "请求的方法不存在!", 1, "", null);
} else if (connection.getResponseCode() == 40005) {
json = SpliceJson.getStatusMessage(1, "请求的HTTP METHOD不支持!", 1,
"", null);
} else if (connection.getResponseCode() == 40006) {
json = SpliceJson.getStatusMessage(1, "传入的接口参数不合法!", 1, "",
null);
} else if (connection.getResponseCode() == 40007) {
json = SpliceJson.getStatusMessage(1,
"获取access_token时验证未通过,请检查app_id与app_key是否有效!", 1, "",
null);
} else if (connection.getResponseCode() == 40008) {
json = SpliceJson.getStatusMessage(1, "请使用https进行访问!", 1, "",
null);
} else if (connection.getResponseCode() == 40009) {
json = SpliceJson.getStatusMessage(1, "您的操作执行失败!", 1, "", null);
} else if (connection.getResponseCode() == 40010) {
json = SpliceJson.getStatusMessage(1, "API版本错误!", 1, "", null);
} else if (connection.getResponseCode() == 401) {
json = SpliceJson.getStatusMessage(1, "没有进行身份验证!", 1, "", null);
} else if (connection.getResponseCode() == 40101) {
json = SpliceJson.getStatusMessage(1,
"授权出错,提供的access_token是无效的、过期的或已撤销的!", 1, "", null);
} else if (connection.getResponseCode() == 40102) {
json = SpliceJson.getStatusMessage(1, "访问错误,接口“%s”不存在!", 1, "",
null);
} else if (connection.getResponseCode() == 40102) {
json = SpliceJson.getStatusMessage(1, "访问错误,接口“%s”不可用!", 1, "",
null);
} else if (connection.getResponseCode() == 40104) {
json = SpliceJson.getStatusMessage(1, "访问错误,没有访问“%s”接口的权限!", 1,
"", null);
} else if (connection.getResponseCode() == 40105) {
json = SpliceJson.getStatusMessage(1, "账号错误,提供的接口账号是无效的!", 1,
"", null);
} else if (connection.getResponseCode() == 40106) {
json = SpliceJson.getStatusMessage(1, "提供的接口账号没有授权,请检查您的过滤规则!",
1, "", null);
} else if (connection.getResponseCode() == 403) {
json = SpliceJson.getStatusMessage(1, "没有权限访问对应的资源!", 1, "",
null);
} else if (connection.getResponseCode() == 40301) {
json = SpliceJson
.getStatusMessage(1, "请求的方法没有权限!", 1, "", null);
} else if (connection.getResponseCode() == 404) {
json = SpliceJson.getStatusMessage(1, "请求的资源不存在!", 1, "", null);
} else if (connection.getResponseCode() == 502) {
json = SpliceJson.getStatusMessage(1, "接口API关闭或正在升级!", 1, "",
null);
} else {
connection.setReadTimeout(60000);
connection.connect();
InputStream in = connection.getInputStream();
BufferedReader sbfReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
StringBuffer sbf = new StringBuffer();
String readContent = null;
while ((readContent = sbfReader.readLine()) != null) {
sbf.append(readContent).append("\n");
};
System.out.println(" HTTP get json=" + sbf.toString());
if(sbf.toString() != null){
json = sbf.toString();
}else {
json=SpliceJson.getStatusMessage(1, "服务器请求无数据返回!", 1, "", null);
}
in.close();
}
if (connection != null) {
connection.disconnect();
}
} catch (Exception e) {
json = SpliceJson.getStatusMessage(1, "服务器连接失败!", 1, "", null);
}
return json;
}
/**
* 从业务处理服务器获取请求的方法
* @param protocol 使用的协议
* @param host 主机
* @param port 端口
* @param filepath 文件(路径)
* @param actionType 表示增(create)、删除(delete),修改(update)
* @throws IOException
*/
public static String getRequestPostData(String filePath,String actionType,Map<String, Object> map) {
String result="";
Map<String, String > serverMap = ResovlePorperties.getService();
String server_ip=serverMap.get("server_ip");
int server_port=Integer.valueOf(serverMap.get("server_port"));
URL url;
HttpURLConnection connection;
try {
url = new URL(PROTOCOL,server_ip,server_port,filePath);
connection = (HttpURLConnection) url.openConnection();
//设置 HttpURLConnection的断开时间
connection.setReadTimeout(5000);
connection.setDoOutput(true);
connection.setDoInput(true);
// Set the post method. Default is GET
connection.setRequestMethod("POST");
// Post cannot use caches
// Post 请求不能使用缓存
connection.setUseCaches(false);
// 设置 HttpURLConnection的接收的文件类型
connection.setRequestProperty("Accept","application/json, text/javascript, */*; q=0.01");
// 设置 HttpURLConnection的接收语音
connection.setRequestProperty("Accept-Language","zh-CN,zh;q=0.8");
// 指定请求uri的源资源地址
// conn.setRequestProperty("Referer", file);
// 设置 HttpURLConnection的字符编码
connection.setRequestProperty("Content-Type","application/json");
connection.setRequestProperty("application/json", "UTF-8");
connection.setRequestProperty("Cache-Control", "no-cache");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Pragma","no-cache");
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36");
// 获取连接
connection.connect();
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
// DataOutputStream out = new DataOutputStream(connection.getOutputStream());
if(actionType.equalsIgnoreCase("create")){
//输出请求解析MAP之后的json数据
out.write(getCreateJSONData(map).toString());
System.out.println("create方法输出:"+getCreateJSONData(map).toString());
}else if (actionType.equalsIgnoreCase("update")) {
//输出请求解析MAP之后的json数据
out.write(getUpdateJSONData(map).toString());
System.out.println("update方法输出:"+getUpdateJSONData(map).toString());
}else if (actionType.equalsIgnoreCase("delete")) {
//输出请求解析MAP之后的json数据
out.write(getDeleteJSONData(map).toString());
System.out.println("delete方法输出:"+getDeleteJSONData(map).toString());
}else if (actionType.equalsIgnoreCase("add")) {
//输出请求解析MAP之后的json数据
out.write(getDeleteJSONData(map).toString());
System.out.println("add方法输出:"+getDeleteJSONData(map).toString());
}else if (actionType.equalsIgnoreCase("remove")) {
//输出请求解析MAP之后的json数据
out.write(getDeleteJSONData(map).toString());
System.out.println("remove方法输出:"+getDeleteJSONData(map).toString());
}else if (actionType.equalsIgnoreCase("devs")) {
//输出请求解析MAP之后的json数据
out.write(getBindJSONData(map).toString());
System.out.println("NO Bind方法输出:"+getBindJSONData(map).toString());
}else {
//输出请求解析MAP之后的json数据
out.write("输入HTTP post 提交的方法参数错误:如create,update,delete.");
}
// flush输出流的缓冲
out.flush();
// String content = " firstname= "+ URLEncoder.encode(" 一个大肥人 ", "Utf-8");
System.out.println(" 发送 响应状态"+connection.getResponseCode());
System.out.println(" 发送POST 格式"+connection.getContentType());
System.out.println(" 发送POST 消息"+connection.getResponseMessage());
if(connection.getResponseCode()==500){
result = SpliceJson.getStatusMessage(1, "网络异常,操作失败!", 1, "", null);
}else {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
String line;
System.out.println(" ============================= ");
System.out.println(" Contents of post request ");
System.out.println(" ============================= ");
while ((line = reader.readLine()) != null) {
result += line;
System.out.println(line);
}
System.out.println(" ============================= ");
System.out.println(" Contents of post request ends ");
System.out.println(" ============================= ");
reader.close();
}
out.close();
} catch (IOException e) {
json = SpliceJson.getStatusMessage(1, "服务器连接失败!", 1, "", null);
e.printStackTrace();
}
return result;
}
/**
* 根据列表的ID update data 循环PSOT需要提交的参数
*
* @return
*/
public static String getUpdateJSONData(Map<String, Object> map) {
Set<Entry<String, Object>> key = map.entrySet();
StringBuffer sbf = new StringBuffer();
sbf.append("{");
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
Entry<String, Object> entry = (Entry<String, Object>) iterator
.next();
if (entry.getKey().equalsIgnoreCase("params")) {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":" + entry.getValue() + ",");
} else {
if (entry.getValue().getClass().getName().equalsIgnoreCase("java.lang.Integer")|| entry.getValue().getClass().getName().equalsIgnoreCase("int")) {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":" + entry.getValue() + ",");
} else {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":\"" + entry.getValue() + "\",");
}
}
}
sbf = sbf.deleteCharAt(sbf.length() - 1);
sbf.append("}");
// URLEncoder
return sbf.toString();
}
/**
* 主要用于“condition”:{ 查询条件 “sn”:“1323”, ...... 参考获取设备列表中的条件 }, 根据列表的SN
* 循环PSOT需要提交的参数
*
* @return
*/
public static String getConditionJSONData(Map<String, Object> map) {
Set<Entry<String, Object>> key = map.entrySet();
StringBuffer sbf = new StringBuffer();
sbf.append("{");
if (!key.isEmpty()) {
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
if (entry.getValue().getClass().getName()
.equalsIgnoreCase("java.lang.Integer")
|| entry.getValue().getClass().getName()
.equalsIgnoreCase("int")) {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":" + entry.getValue() + ",");
} else {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":\"" + entry.getValue() + "\",");
}
}
sbf = sbf.deleteCharAt(sbf.length() - 1);
}
sbf.append("}");
return sbf.toString();
}
/**
* 根据列表的ID 删除数据,需要要有批量删除 循环PSOT需要提交的参数
*
* @return
*/
public static String getDeleteJSONData(Map<String, Object> map) {
Set<Entry<String, Object>> key = map.entrySet();
StringBuffer sbf = new StringBuffer();
sbf.append("{");
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
if (!entry.getKey().equalsIgnoreCase("list")) {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":\"" + entry.getValue() + "\",");
} else {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":[" + entry.getValue() + ",");
sbf = sbf.deleteCharAt(sbf.length() - 1);
sbf.append("],");
}
}
sbf = sbf.deleteCharAt(sbf.length() - 1);
sbf.append("}");
return sbf.toString();
}
/**
* 根据列表的ID 解绑数据,需要要有批量解绑数据 循环PSOT需要提交的参数
*
* @return
*/
public static String getBindJSONData(Map<String, Object> map) {
Set<Entry<String, Object>> key = map.entrySet();
StringBuffer sbf = new StringBuffer();
sbf.append("{");
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
if (!entry.getKey().equalsIgnoreCase("devs")) {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":\"" + entry.getValue() + "\",");
} else {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":[" + entry.getValue() + ",");
sbf = sbf.deleteCharAt(sbf.length() - 1);
sbf.append("],");
}
}
sbf = sbf.deleteCharAt(sbf.length() - 1);
sbf.append("}");
return sbf.toString();
}
/**
* 格式化JSON的参数
*
* @return
*/
public static String getFormatJSONData(Map<String, Object> map) {
Set<Entry<String, Object>> key = map.entrySet();
StringBuffer sbf = new StringBuffer();
sbf.append("{");
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":" + entry.getValue() + ",");
}
sbf = sbf.deleteCharAt(sbf.length() - 1);
sbf.append("}");
return sbf.toString();
}
/**
* 新建列表的参数 循环PSOT需要提交的参数 格式:{"sn:"1}
*
* @return
*/
@SuppressWarnings("unchecked")
public static String getCreateJSONData(Map<String, Object> map) {
Set<Entry<String, Object>> key = map.entrySet();
StringBuffer sbf = new StringBuffer();
sbf.append("{");
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
if (entry.getKey().equals("condition")
|| entry.getKey().equalsIgnoreCase("remove")
|| entry.getKey().equalsIgnoreCase("list")
|| entry.getKey().equalsIgnoreCase("add")) {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":" + entry.getValue() + ",");
} else if (entry.getValue().getClass().getName()
.equalsIgnoreCase("java.lang.Integer")
|| entry.getValue().getClass().getName()
.equalsIgnoreCase("int")) {
sbf.append("\"" + entry.getKey() + "\"");
sbf.append(":" + entry.getValue() + ",");
} else {
sbf.append("\"" + entry.getKey() + "\"");
// System.out.println("entry.getValue()=="+entry.getValue().getClass().getName());
sbf.append(":\"" + entry.getValue() + "\",");
}
}
sbf = sbf.deleteCharAt(sbf.length() - 1);
sbf.append("}");
return sbf.toString();
}
/**
* 新建时候----移除设备的ID 获取ID列
*
* @return
*/
public static String getRemoveIDJSONData(Map<String, Object> map) {
Set<Entry<String, Object>> key = map.entrySet();
StringBuffer sbf = new StringBuffer();
sbf.append("[");
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
// sbf.append("\""+entry.getKey()+"\"");
sbf.append("" + entry.getValue() + ",");
}
sbf = sbf.deleteCharAt(sbf.length() - 1);
sbf.append("]");
return sbf.toString();
}
/**
* http获取请求的json
*
* @throws IOException
*/
public static void main(String args[]) throws IOException {
HttpRequestUtil util = new HttpRequestUtil();
// String getJson=
// util.getRequsetGetData("/1/dev/getModelDetail?access_token=231kkks&agencyId=1&id=2&colFlag=7");
// JSONObject jsonObject = JSONObject.fromObject(getJson);
// User user = new User();
// user.setId(Integer.valueOf(jsonObject.get("id").toString()));
// user.setName(jsonObject.get("name").toString());
// System.out.println("获取代理商 name=" +user.getName());
// System.out.println("获取代理商 id=" +user.getId());
String json = util
.getRequestGetData("/1/dev/getModelList?=access_token=231kkks&agencyId=1&page=1&pageSize=20&colFlag=7");
System.out.println("GET 方式获取" + json);
// Map<String, Object> map = new HashMap<String, Object>();
/*
* 用户删除数据 String id = "2,3,4"; System.out.println("id="+id); //
* map.put("Test", "测试"); map.put("access_toke", "xxxxx");
* map.put("agencyId", 1); map.put("userId", 1); map.put("list", id);
* System.out.println(map.toString()); String psot
* =util.getRequsetPostData("/1/dev/deleteModel","delete",map); //
* String psot
* =util.getRequsetPostData("/100msh/account_findAllListPage.action"
* ,"create",map); System.out.println("post方式获取"+psot);
*/
// String sjon="{\"name\":\"型号名称\",\"describe\":\"描述内容\"}";
// System.out.println("sion=="+sjon);
// map.put("access_toke", "xxxxx");
// map.put("agencyId", 1);
// map.put("userId", 1);
// map.put("id", 1);
// map.put("params", sjon);
// String psot
// =util.getRequestPostData("/1/dev/modifyModel","update",map);
// System.out.println("post方式获取"+psot);
// util.sendData("/100msh/account_findAllListPage.action");
// System.out.println("发送:");
// long begintime = System.currentTimeMillis();
// URL url = new URL(ADD_URL);
// System.out.println(" 获取url主机名:" + url.getHost());
// System.out.println(" 获取此 URL 的端口。:" + url.getPort());
// System.out.println(" 获取此 URL 的协议名称。:" + url.getProtocol());
// System.out.println(" 获取此 URL 的文件名。:" + url.getFile());
// System.out.println(" 获取此 URL 的内容。:" + url.getContent());
// System.out.println(" 获取此 URL 的路径。:" + url.getPath());
// System.out.println(" 获取此 URL 的Authority。:" + url.getAuthority());
// System.out.println(" 获取此 URL 的DefaultPort。:" + url.getDefaultPort());
// System.out.println(" 获取此 URL 的Query。:" + url.getQuery());
// System.out.println(" 获取此 URL 的UserInfo。:" + url.getUserInfo());
// HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();
// // 获取连接
// urlcon.connect();
// InputStream in = urlcon.getInputStream();
// BufferedReader sbfReader = new BufferedReader(new
// InputStreamReader(in));
// StringBuffer sbf = new StringBuffer();
// String readContent = null;
// while ((readContent = sbfReader.readLine()) != null) {
// sbf.append(readContent).append("\n");
// }
// System.out.println(sbf.toString());
// System.out.println(" content-encode:" + urlcon.getContentEncoding());
// System.out.println(" content-length:" + urlcon.getContentLength());
// System.out.println(" content-type:" + urlcon.getContentType());
// System.out.println(" content-type:" + urlcon.getConnectTimeout());
// System.out.println(" 状态码:" + urlcon.getResponseCode());
// System.out.println(" 状态码:" + urlcon.getRequestMethod());
// System.out.println(" date:" + urlcon.getDate());
//
// System.out.println("总共执行时间为:"
// + (System.currentTimeMillis() - begintime) + "毫秒");
}
}
java http get、post方式
最新推荐文章于 2016-03-03 14:21:14 发布