zoukankan      html  css  js  c++  java
  • http get和post 接口方式

    package net.joystart.common.util;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    import java.net.SocketTimeoutException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.List;
    import java.util.Map;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.ResponseHandler;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.utils.URLEncodedUtils;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.protocol.HTTP;
    import org.apache.http.util.EntityUtils;
    
    import com.google.gson.Gson;
    
    public class HttpRequestUtil {
    	/**
    	 * 向指定URL发送GET方法的请求
    	 * 
    	 * @param url
    	 *            发送请求的URL
    	 * @param param
    	 *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    	 * @return URL 所代表远程资源的响应结果
    	 */
    	public static String sendGet(String url, String param) {
    		String result = "";
    		StringBuilder jsonStr = new StringBuilder();
    		BufferedReader in = null;
    		String urlNameString = "";
    		try {
    			urlNameString = url + param;
    			URL realUrl = new URL(urlNameString);
    			// 打开和URL之间的连接
    			URLConnection connection = realUrl.openConnection();
    			// 设置通用的请求属性
    			connection.setRequestProperty("accept", "*/*");
    			connection.setRequestProperty("connection", "Keep-Alive");
    			connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    			// 建立实际的连接
    			connection.connect();
    			// 获取所有响应头字段
    			Map<String, List<String>> map = connection.getHeaderFields();
    			// 遍历所有的响应头字段
    			// for (String key : map.keySet()) {
    			// System.out.println(key + "--->" + map.get(key));
    			// }
    
    			InputStreamReader reader = new InputStreamReader(connection.getInputStream(), ConstantUtil.UTF_CODE);
    			char[] buff = new char[1024];
    			int length = 0;
    			while ((length = reader.read(buff)) != -1) {
    				result = new String(buff, 0, length);
    				jsonStr.append(result);
    			}
    
    			Gson gson = new Gson();
    			Map temp = gson.fromJson("", Map.class);
    
    		} catch (Exception e) {
    			System.out.println("请求地址:url:" + urlNameString);
    			System.out.println("发送GET请求出现异常!" + e);
    			e.printStackTrace();
    		}
    		// 使用finally块来关闭输入流
    		finally {
    			try {
    				if (in != null) {
    					in.close();
    				}
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    		}
    		return jsonStr.toString();
    	}
    
    	/**
    	 * 向指定 URL 发送POST方法的请求
    	 * 
    	 * @param url
    	 *            发送请求的 URL
    	 * @param param
    	 *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    	 * @return 所代表远程资源的响应结果
    	 */
    	public static String sendPost(String url, String param) {
    		PrintWriter out = null;
    		BufferedReader in = null;
    		URLConnection conn = null;
    		StringBuilder jsonStr = new StringBuilder();
    		try {
    			URL realUrl = new URL(url);
    			// 打开和URL之间的连接
    			conn = realUrl.openConnection();
    			conn.setConnectTimeout(20000);
    			// 设置通用的请求属性
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    			// 发送POST请求必须设置如下两行
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			// 获取URLConnection对象对应的输出流
    			out = new PrintWriter(conn.getOutputStream());
    			// 发送请求参数
    			out.print(param);
    			// flush输出流的缓冲
    			out.flush();
    			// 定义BufferedReader输入流来读取URL的响应
    
    			InputStreamReader reader = new InputStreamReader(conn.getInputStream(), ConstantUtil.UTF_CODE);
    			char[] buff = new char[1024];
    			int length = 0;
    			while ((length = reader.read(buff)) != -1) {
    				String result = new String(buff, 0, length);
    				jsonStr.append(result);
    			}
    		} catch (Exception e) {
    			System.out.println("发送 POST 请求出现异常!" + e);
    			e.printStackTrace();
    		}
    		// 使用finally块来关闭输出流、输入流
    		finally {
    			try {
    				if (out != null) {
    					out.close();
    				}
    				if (in != null) {
    					in.close();
    				}
    			} catch (IOException ex) {
    				ex.printStackTrace();
    			}
    		}
    		return jsonStr.toString();
    	}
    
    	/**
    	 * 向指定 URL 发送POST方法的请求
    	 * 
    	 * @param url
    	 *            发送请求的 URL
    	 * @param param
    	 *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    	 * @return 所代表远程资源的响应结果
    	 */
    	public static String sendPost(String url, String param, Map<String, String> header) {
    		PrintWriter out = null;
    		BufferedReader in = null;
    		URLConnection conn = null;
    		StringBuilder jsonStr = new StringBuilder();
    		try {
    			URL realUrl = new URL(url);
    			// 打开和URL之间的连接
    			conn = realUrl.openConnection();
    			conn.setConnectTimeout(20000);
    			// 设置通用的请求属性
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    			// 添加header信息
    			for (Map.Entry<String, String> entry : header.entrySet()) {
    				conn.setRequestProperty(entry.getKey(), entry.getValue());
    			}
    
    			// 发送POST请求必须设置如下两行
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			// 获取URLConnection对象对应的输出流
    			out = new PrintWriter(conn.getOutputStream());
    			// 发送请求参数
    			out.print(param);
    			// flush输出流的缓冲
    			out.flush();
    			// 定义BufferedReader输入流来读取URL的响应
    
    			InputStreamReader reader = new InputStreamReader(conn.getInputStream(), ConstantUtil.UTF_CODE);
    			char[] buff = new char[1024];
    			int length = 0;
    			while ((length = reader.read(buff)) != -1) {
    				String result = new String(buff, 0, length);
    				jsonStr.append(result);
    			}
    		} catch (Exception e) {
    			System.out.println("发送 POST 请求出现异常!" + e);
    			e.printStackTrace();
    		}
    		// 使用finally块来关闭输出流、输入流
    		finally {
    			try {
    				if (out != null) {
    					out.close();
    				}
    				if (in != null) {
    					in.close();
    				}
    			} catch (IOException ex) {
    				ex.printStackTrace();
    			}
    		}
    		return jsonStr.toString();
    	}
    
    	/*
    	 * 包的方式
    	 * psot传参方式
    	 * E代驾专用接口
    	 * add cjl
    	 */
    	public static String doPostJson(String url, String param) {
    		String responseBody = "";
    		HttpPost httppost = new HttpPost(url);
    		StringEntity entities = new StringEntity(param, "UTF-8");
    		entities.setContentEncoding("UTF-8");
    		entities.setContentType("application/x-www-form-urlencoded");
    		httppost.setEntity(entities);
    		ResponseHandler<String> responseHandler = new ResponseHandler<String>() {
    
    			public String handleResponse(final HttpResponse response) throws ClientProtocolException, IOException {
    				int status = response.getStatusLine().getStatusCode();
    				if (status >= 200 && status < 300) {
    					HttpEntity entity = response.getEntity();
    					return entity != null ? EntityUtils.toString(entity) : null;
    				} else {
    					throw new ClientProtocolException("Unexpected response status: " + status);
    				}
    			}
    		};
    		try {
    			responseBody = new DefaultHttpClient().execute(httppost, responseHandler);
    		} catch (SocketTimeoutException e) {
    			e.printStackTrace();
    			responseBody = "timeout";
    			return responseBody;
    		} catch (ClientProtocolException e) {
    			e.printStackTrace();
    			return responseBody;
    		} catch (IOException e) {
    			e.printStackTrace();
    			return responseBody;
    		}
    		return responseBody;
    	}
    
    	/*
    	 * get传参方式
    	 * E代驾专用接口
    	 * add cjl
    	 */
    	public static String doGetJson(String url, String param) {
    		String result = "";
    		BufferedReader in = null;
    		try {
    			String urlNameString = url + "?" + param;
    			URL realUrl = new URL(urlNameString);
    			URLConnection connection = realUrl.openConnection();
                // 设置通用的请求属性
                connection.setRequestProperty("accept", "*/*");
                connection.setRequestProperty("connection", "Keep-Alive");
                connection.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 建立实际的连接
                connection.connect();
                // 获取所有响应头字段
                Map<String, List<String>> map = connection.getHeaderFields();
                // 遍历所有的响应头字段
                for (String key : map.keySet()) {
                    System.out.println(key + "--->" + map.get(key));
                }
                // 定义 BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(
                        connection.getInputStream(),ConstantUtil.UTF_CODE));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送GET请求出现异常!" + e);
                e.printStackTrace();
            }
            // 使用finally块来关闭输入流
            finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            return result;
    	}
    
    
    }
    

      

  • 相关阅读:
    定制一个类似地址选择器的view
    3D版翻页公告效果
    一分钟搞定触手app主页酷炫滑动切换效果
    苹果版小黄车(ofo)app主页菜单效果
    基于SpringMVC+Ext.js的权限管理系统(无权限框架)
    使用 mybatis + flying-0.9.4 的电商后端
    iOS仿支付宝首页效果
    Android蓝牙
    JavaWeb Session详解
    原生JS实现的h5小游戏-植物大战僵尸
  • 原文地址:https://www.cnblogs.com/cuijinlong/p/7456645.html
Copyright © 2011-2022 走看看