分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

Http请求get和post调用

发布时间:2023-09-06 01:23责任编辑:白小东关键词:暂无标签

工作中会遇到远程调用接口,需要编写Http请求的共通类

以下是自己总结的Http请求代码

package com.gomecar.index.common.utils;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.nio.charset.Charset;import java.util.*;public class HttpUtils { ???/** ????* 向指定URL发送GET方法的请求 ????* ?????* @param url ????* ???????????发送请求的URL ????* @param param ????* ???????????请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 ????* @param timeout 连接超时时间 /单位毫秒 ????* @return URL 所代表远程资源的响应结果 ????*/ ???public static String sendGet(String url, String param,int timeout) { ???????StringBuffer resultBuf = new StringBuffer(); ???????BufferedReader in = null; ???????try { ???????????String urlNameString = url + "?" + param; ???????????URL realUrl = new URL(urlNameString); ???????????// 打开和URL之间的连接 ???????????URLConnection connection = realUrl.openConnection(); ???????????// 设置通用的请求属性 ???????????// connection.setRequestProperty("accept", "*/*"); ???????????// connection.setRequestProperty("connection", "Keep-Alive"); ???????????connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); ???????????connection.setConnectTimeout(timeout); ???????????// 建立实际的连接 ???????????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(), Charset.forName("UTF-8"))); ???????????String line; ???????????while ((line = in.readLine()) != null) { ???????????????resultBuf.append(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 resultBuf.toString(); ???} ???public static String assemParam(Map<String, Object> param) { ???????Set<String> keys = param.keySet(); ???????StringBuffer sb = new StringBuffer(); ???????for (Iterator<String> iter = keys.iterator(); iter.hasNext();) { ???????????String key = iter.next(); ???????????sb.append(key); ???????????sb.append("="); ???????????sb.append(param.get(key)); ???????????if (iter.hasNext()) { ???????????????sb.append("&"); ???????????} ???????} ???????return sb.toString(); ???} ???/** ????* 向指定 URL 发送POST方法的请求 ????* ????* @param url ????* ???????????发送请求的 URL ????* @param req ????* ???????????请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 ????* @param timeout 连接超时时间 /单位毫秒 ????* @return 所代表远程资源的响应结果 ????*/ ???public static String sendPost(String url, Map req,int timeout) { ???????PrintWriter out = null; ???????BufferedReader in = null; ???????String result = ""; ???????try { ???????????URL realUrl = new URL(url); ???????????// 打开和URL之间的连接 ???????????URLConnection conn = realUrl.openConnection(); ???????????// 设置通用的请求属性 ???????????conn.setRequestProperty("accept", "*/*"); ???????????conn.setRequestProperty("connection", "Keep-Alive"); ???????????conn.setRequestProperty("user-agent", ???????????????????"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); ???????????conn.setRequestProperty("content-type", "text/json"); ???????????conn.setRequestProperty("method","POST"); ???????????// 发送POST请求必须设置如下两行 ???????????conn.setDoOutput(true); ???????????conn.setDoInput(true); ???????????conn.setConnectTimeout(timeout);//连接超时时间 ???????????// 获取URLConnection对象对应的输出流 ???????????StringBuilder sb=new StringBuilder(); ???????????Iterator<String> iterator = req.keySet().iterator(); ???????????while (iterator.hasNext()) { ???????????????String key=iterator.next().toString(); ???????????????String val=req.get(key).toString(); ???????????????sb.append(key); ???????????????sb.append("="); ???????????????sb.append(val); ???????????????if (iterator.hasNext()) { ???????????????????sb.append("&"); ???????????????} ???????????} ???????????out = new PrintWriter(conn.getOutputStream()); ???????????// 发送请求参数 ???????????out.print(sb); ???????????// flush输出流的缓冲 ???????????out.flush(); ???????????// 定义BufferedReader输入流来读取URL的响应 ???????????in = new BufferedReader( ???????????????????new InputStreamReader(conn.getInputStream(),Charset.forName("utf-8"))); ???????????String line; ???????????while ((line = in.readLine()) != null) { ???????????????result += line; ???????????} ???????} catch (Exception e) { ???????????System.out.println("发送 POST 请求出现异常!"+e+" url="+url+" param="+req+" time="+timeout); ???????????e.printStackTrace(); ???????} ???????//使用finally块来关闭输出流、输入流 ???????finally{ ???????????try{ ???????????????if(out!=null){ ???????????????????out.close(); ???????????????} ???????????????if(in!=null){ ???????????????????in.close(); ???????????????} ???????????} ???????????catch(IOException ex){ ???????????????ex.printStackTrace(); ???????????} ???????} ???????return result; ???} ???/** ????* 向指定 URL 发送POST方法的请求 ????* ????* @param url 发送请求的 URL ????* @param req 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 ????* @return 所代表远程资源的响应结果 ????*/ ???public static String sendPost(String url, String json) { ???????PrintWriter out = null; ???????BufferedReader in = null; ???????String result = ""; ???????try { ???????????URL realUrl = new URL(url); ???????????// 打开和URL之间的连接 ???????????URLConnection conn = realUrl.openConnection(); ???????????// 设置通用的请求属性 ???????????conn.setRequestProperty("accept", "*/*"); ???????????conn.setRequestProperty("connection", "Keep-Alive"); ???????????conn.setRequestProperty("user-agent", ???????????????????"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); ???????????conn.setRequestProperty("content-type", "text/json"); ???????????// 发送POST请求必须设置如下两行 ???????????conn.setDoOutput(true); ???????????conn.setDoInput(true); ???????????conn.setConnectTimeout(5000);//连接超时时间 ???????????// 获取URLConnection对象对应的输出流 ???????????out = new PrintWriter(conn.getOutputStream()); ???????????// 发送请求参数 ???????????out.print(json); ???????????// flush输出流的缓冲 ???????????out.flush(); ???????????// 定义BufferedReader输入流来读取URL的响应 ???????????in = new BufferedReader( ???????????????????new InputStreamReader(conn.getInputStream(), Charset.forName("utf-8"))); ???????????String line; ???????????while ((line = in.readLine()) != null) { ???????????????result += line; ???????????} ???????} catch (Exception e) { ???????????System.out.println("发送 POST 请求出现异常!"+e+" url="+url); ???????????e.printStackTrace(); ???????} ???????//使用finally块来关闭输出流、输入流 ???????finally { ???????????try { ???????????????if (out != null) { ???????????????????out.close(); ???????????????} ???????????????if (in != null) { ???????????????????in.close(); ???????????????} ???????????} catch (IOException ex) { ???????????????ex.printStackTrace(); ???????????} ???????} ???????return result; ???} ???public static void main(String[] args) { ???????// http://10.144.48.82/mobile_api/serviceApi?method=product.ProductService.getGoodsInfo&skuNo=8001019816 ???????String re = new HttpUtils().sendGet("http://10.144.48.82/serviceApi", ???????????????"method=product.getGoodsInfo&skuNo=8001019816",60); ???????// System.out.println(re); ???} ???public String post(String url, String encoding, Map<String,String> map){ ???????boolean checkFlag = false; ???????HttpPost post = null; ???????DefaultHttpClient httpClient = new DefaultHttpClient(); ???????try { ???????????//String url = "http://localhost:8081/batchCates";//Constant.PERMISSION_URL; ???????????post = new HttpPost(url); ???????????List<BasicNameValuePair> postData = new ArrayList<BasicNameValuePair>(); ???????????for (Map.Entry<String, String> entry : map.entrySet()) { ???????????????postData.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); ???????????????//LOG.info(entry.getValue()); ???????????} ???????????UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postData,encoding); ???????????post.setEntity(entity); ???????????HttpResponse response = httpClient.execute(post); ???????????//LOG.info(System.currentTimeMillis() - startTime); ???????????HttpEntity resEntiy = response.getEntity(); ???????????String result = EntityUtils.toString(resEntiy); ??????????return result; ???????} catch (Exception e) { ???????????e.printStackTrace(); ???????} ???????return ""; ???}}

Http请求get和post调用

原文地址:http://www.cnblogs.com/shoutn/p/7800937.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved