java http get、post方式



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) + "毫秒");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值