java http get、post方式

来源:互联网 发布:手机文档解密软件 编辑:程序博客网 时间:2024/05/21 10:21
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";// IPpublic 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("}");// URLEncoderreturn 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) + "毫秒");}}

0 0
原创粉丝点击