精华内容
下载资源
问答
  • java调用http请求

    2016-08-31 15:14:57
    java调用http请求方法封装,参数为url,method,params。直接调用即可,返回调用返回的数据
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;
    import java.net.URLEncoder;
    import java.util.Iterator;
    import java.util.Map;
    
    import org.springframework.util.StringUtils;
    
    public class AccessUrlUtil {
    
    	/**
    	 * 访问url
    	 * 
    	 * @param url
    	 * @param method
    	 * @param map
    	 * @return
    	 */
    	public static Object accessUrl(String url, String method, Map<String, String> map) throws Exception {
    		method = (null == method || "".equals(method)) ? "GET" : method;
    		StringBuffer params = new StringBuffer("");
    		if (null != map && !map.isEmpty()) {
    			Iterator<String> keys = map.keySet().iterator();
    			while (keys.hasNext()) {
    				String key = keys.next();
    				params.append(encode(key, map.get(key))).append('&');
    			}
    		}
    		URL localURL = new URL(url);
    		URLConnection connection = localURL.openConnection();
    		HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
    		httpURLConnection.setDoOutput(true);
    		httpURLConnection.setRequestMethod(method);
    		httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
    		httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    		httpURLConnection.setRequestProperty("Content-Length", String.valueOf(params.length()));
    
    		OutputStream outputStream = null;
    		OutputStreamWriter outputStreamWriter = null;
    		InputStream inputStream = null;
    		InputStreamReader inputStreamReader = null;
    		BufferedReader reader = null;
    		StringBuffer resultBuffer = new StringBuffer("");
    		String tempLine = null;
    
    		try {
    			outputStream = httpURLConnection.getOutputStream();
    			outputStreamWriter = new OutputStreamWriter(outputStream);
    
    			outputStreamWriter.write(params.toString());
    			outputStreamWriter.flush();
    
    			if (httpURLConnection.getResponseCode() >= 300) {
    				throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
    			}
    
    			inputStream = httpURLConnection.getInputStream();
    			inputStreamReader = new InputStreamReader(inputStream);
    			reader = new BufferedReader(inputStreamReader);
    
    			while ((tempLine = reader.readLine()) != null) {
    				resultBuffer.append(tempLine);
    			}
    
    		} finally {
    
    			if (outputStreamWriter != null) {
    				outputStreamWriter.close();
    			}
    
    			if (outputStream != null) {
    				outputStream.close();
    			}
    
    			if (reader != null) {
    				reader.close();
    			}
    
    			if (inputStreamReader != null) {
    				inputStreamReader.close();
    			}
    
    			if (inputStream != null) {
    				inputStream.close();
    			}
    
    		}
    		return resultBuffer.toString();
    
    	}
    
    	private static String encode(String key, String value) throws UnsupportedEncodingException {
    		return URLEncoder.encode(key, "UTF-8") + '=' + URLEncoder.encode(value, "UTF-8");
    	}
    }

    展开全文
  • Java调用Http请求

    2015-11-19 14:39:54
    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL;publi
    package test;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class HttpInvokeUtils {
    
      /**
       * 
       * @param getUrl
       *        接口地址(已拼接参数)
       * @return 接口调用返回参数
       */
      public static String invokeContentFromGet(String getUrl) {
        try {
          URL url = new URL(getUrl);
          HttpURLConnection conn = (HttpURLConnection) url.openConnection();
          // 获取响应状态
          if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
            System.out.println("连接接口地址失败!");
            return "";
          }
          // 获取响应内容体
          String line, result = "";
          BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
          while ((line = in.readLine()) != null) {
            result += line;
          }
          in.close();
          return result;
        }
        catch (Exception e) {
          System.err.println("接口调用失败:" + e.getMessage());
        }
        return "";
      }
    
      /***
       * post方式调用接口
       * 
       * @param postUrl
       *        接口地址
       * @param postData
       *        接口参数
       * @return 接口调用返回参数
       */
      public static String invokeContentFromPost(String postUrl, String postData) {
        try {
          URL url = new URL(postUrl);
          HttpURLConnection conn = (HttpURLConnection) url.openConnection();
          conn.setRequestMethod("POST");
          conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
          conn.setRequestProperty("Connection", "Keep-Alive");
          conn.setUseCaches(false);
          conn.setDoOutput(true);
          conn.setRequestProperty("Content-Length", "" + postData.length());
          OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
          out.write(postData);
          out.flush();
          out.close();
          // 获取响应状态
          if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
            System.out.println("连接接口地址失败!");
            return "";
          }
          // 获取响应内容体
          String line, result = "";
          BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
          while ((line = in.readLine()) != null) {
            result += line;
          }
          in.close();
          return result;
        }
        catch (IOException e) {
          System.out.println("接口调用失败!" + e.getMessage());
        }
        return "";
      }
    }
    
    展开全文
  • java调用http请求接口

    2020-03-23 16:03:02
    java调用http请求接口contentType 请求类型 contentType 请求类型 支持application/json 或 application/x-www-form-urlencoded /** * @Description :获取接口返回数据 * @author : laiah * @date : 2020/3/20 ....

    java调用http请求接口

    contentType 请求类型

    支持application/json 或 application/x-www-form-urlencoded

    /**
         * @Description  :获取接口返回数据
         * @param   url 调用接口方法的地址
         * @param   requestMethod 请求方式,POST,GET
         * @param   contentType 请求类型,application/json 或 application/x-www-form-urlencoded
         * @param   paramMap 传入参数
         * @throws Exception
         */
         public static Object getInterfaceResult(String url, String requestMethod, String contentType, Map paramMap) throws Exception{
            URL interfaceURL = new URL(url);// URL请求地址
            HttpURLConnection connection = (HttpURLConnection) interfaceURL.openConnection(); //获取连接
            //允许向连接输入,输出
            connection.setDoOutput(true);
            connection.setDoInput(true);
            //设置请求方式
            connection.setRequestMethod(requestMethod);
            //设置连接超时
            connection.setConnectTimeout(5000);
            // post请求缓存设为false
            connection.setUseCaches(false);
            // 设置该HttpURLConnection实例是否自动执行重定向
            connection.setInstanceFollowRedirects(true);
            connection.setRequestProperty("Connection", "Keep-Alive");// 连接复用
            connection.setRequestProperty("Content-Type", contentType);
            connection.setRequestProperty("charset", "utf-8");
            OutputStream dataOut = new DataOutputStream(connection.getOutputStream());// 创建输入输出流,用于往连接里面输出携带的参数
            String body = "";
            Set keySet = paramMap.keySet();
            if(contentType.contains("application/json")){
                body = ("{");
                for(Object key : keySet){
                    body += "\""+key+"\":"+"\""+paramMap.get(key)+"\",";
                }
                int len = body.length();
                if (body.substring(len-1,len).equals(",")){       //最后一位是','
                    body = body.substring(0,len-1);
                }
                body = body +"}";
            }else if(contentType.contains("application/x-www-form-urlencoded")){
                for(Object key : keySet){
                    body += key + "=" + paramMap.get(key) + "&";
                }
                int len = body.length();
                if (body.substring(len-1,len).equals("&")){       //最后一位是'%'
                    body = body.substring(0,len-1);
                }
            }
            System.out.println("调用接口传入参数:"+body);
            dataOut.write(body.getBytes());
            dataOut.flush();
            dataOut.close();
            BufferedReader reader;
            String line;
            StringBuilder result = new StringBuilder();
            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));// 发送http请求
                // 循环读取流
                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }
                reader.close();
            }
            return result.toString();
        }
    
    展开全文
  • 这就需要http请求进行模块的调用。那么下面,我将以Java为例,详细说明如何发起http请求。 一、GET与POST GET和POST是HTTP的两个常用方法。 GET指从指定的服务器中获取数据 POST指提交数据给指定的服务器处理 1....

    Java如何发起http请求
    前言
    一、GET与POST
    1.GET方法
    2.POST方法
    实现代码
    实例演示
    字符串转json
    结束
    前言
    在未来做项目中,一些功能模块可能会采用不同的语言进行编写。这就需要http请求进行模块的调用。那么下面,我将以Java为例,详细说明如何发起http请求。

    一、GET与POST
    GET和POST是HTTP的两个常用方法。
    GET指从指定的服务器中获取数据
    POST指提交数据给指定的服务器处理

    1.GET方法
    使用GET方法,需要传递的参数被附加在URL地址后面一起发送到服务器。
    例如:http://121.41.111.94/submit?name=zxy&age=21
    特点:

    GET请求能够被缓存
    GET请求会保存在浏览器的浏览记录中
    以GET请求的URL能够保存为浏览器书签
    GET请求有长度限制
    GET请求主要用以获取数据
    2.POST方法
    使用POST方法,需要传递的参数在POST信息中单独存在,和HTTP请求一起发送到服务器。
    例如:
    POST /submit HTTP/1.1
    Host 121.41.111.94
    name=zxy&age=21
    特点:

    POST请求不能被缓存下来
    POST请求不会保存在浏览器浏览记录中
    以POST请求的URL无法保存为浏览器书签
    POST请求没有长度限制
    实现代码
    下面将Java发送GET/POST请求封装成HttpRequest类,可以直接使用。HttpRequest类代码如下:

    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.util.List;
    import java.util.Map;

    public class HttpRequest {
        /**
         * 向指定URL发送GET方法的请求
         *
         * @param url
         *            发送请求的URL
         * @param param
         *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
         * @return URL 所代表远程资源的响应结果
         */
        public static String sendGet(String url, String param) {
            String result = "";
            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("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()));
                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;
        }

        /**
         * 向指定 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;
            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)");
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(conn.getOutputStream());
                // 发送请求参数
                out.print(param);
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(
                        new InputStreamReader(conn.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } 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 result;
        }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    实例演示
    在搭建flask框架文章中,我们已经写好了一个功能模块show(). 该功能模块如下:

    #app的路由地址"/show"即为ajax中定义的url地址,采用POST、GET方法均可提交
    @app.route("/show",methods=["GET", "POST"])
    def show():
        #首先获取前端传入的name数据
        if request.method == "POST":
            name = request.form.get("name")
        if request.method == "GET":
            name = request.args.get("name")
        #创建Database类的对象sql,test为需要访问的数据库名字 具体可见Database类的构造函数
        sql = Database("test")
        try:
            #执行sql语句 多说一句,f+字符串的形式,可以在字符串里面以{}的形式加入变量名 结果保存在result数组中
            result = sql.execute(f"SELECT type FROM type WHERE name='{name}'")
        except Exception as e:
            return {'status':"error", 'message': "code error"}
        else:
            if not len(result) == 0:
                #这个result,我觉得也可以把它当成数据表,查询的结果至多一个,result[0][0]返回数组中的第一行第一列
                return {'status':'success','message':result[0][0]}
            else:
                return "rbq"
                
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    下面 我们利用POST方法发起请求,Java代码如下:

            //创建发起http请求对象
           HttpRequest h = new HttpRequest();
           //向121.41.111.94/show发起POST请求,并传入name参数
           String content = h.sendPost("http://121.41.111.94/show","name=张新宇");
           System.out.println(content);         
    1
    2
    3
    4
    5
    我们打印出content值,发现就是python中show()返回的json(在Java中,content被识别为String类型,而不是json)

    (在转换过程中,不知道出什么问题了,中文显示了unicode编码。但在后面的转json格式后就没有这样的问题了)

    字符串转json
    Java成功发起Http请求后,由于返回值是String类型,而不是原本python函数中的json格式。所以我们需要将字符串类型转为json格式,并通过键值对的形式得出message对应的值。
    首先在maven中引入jar包:

              <dependency>
              <groupId>com.alibaba</groupId>
              <artifactId>fastjson</artifactId>
              <version>1.2.28</version>
              </dependency>
              
    1
    2
    3
    4
    5
    6
    转换代码如下:

    import com.alibaba.fastjson.JSONObject;
    JSONObject jsonObject = JSONObject.parseObject(content);
    System.out.println(jsonObject);
    System.out.println(jsonObject.getString("message"));

    立即学习:  java 对接硬件物联网设备 点击进入 智慧消防解决方案

    展开全文
  • java调用http请求json

    2019-09-24 09:03:31
    最近遇到的问题,java如何调用http请求json: public class HttpClientUtil { private static final String CONTENT_TYPE_TEXT_JSON = "text/json"; private static final String APPLICATION_JSON = ...
  • java调用Http请求工具类

    千次阅读 2019-12-30 11:32:08
    这个只是记录一下常用工具类,不过好处是可能对于新老项目都通吃,经常用到的暂时只有这些,不过我还是更喜欢用RestTemplate来请求别的项目接口。 代码 import com.alibaba.fastjson.JSON; import org.apache....
  • 简介:使用URLConnection实现了调用http请求,该方法不支持调用https请求。https调用方式可查看:HttpURLConnection实现和HttpClient实现1.使用GET方式调用http请求代码: public static String requestHttpGet...
  • 简介:该工具类使用HttpURLConnection实现了调用http请求,同时支持调用https请求。1.实现及测试代码: import com.lenovo.m2.test.utils.StringUtil;import javax.net.ssl.*; import java.io.BufferedReader; ...
  • 简介:该工具类使用HttpClient实现了调用http请求和支持https的调用方式。1.使用HttpClient实现调用http和https请求: import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache....
  • 最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。 在Java中可以使用...
  • 比较原始的一种调用做法,这里把get请求和post请求都统一放在一个方法里面。 过程 GET: 1、创建远程连接 2、设置连接方式(get、post、put。。。) 3、设置连接超时时间 4、设置响应读取时间 5、发起请求 6、获取...
  • java调用HTTP接口(Get请求和Post请求

    万次阅读 多人点赞 2018-09-14 16:43:27
    前提: 一个Http接口:...name=99999999 id和name是传入的参数 浏览器访问接口: ...java代码调用Http接口代码如下(代码中注释分为两部分:处理get请求和post请求): package com.inspur.OKHTTP...
  • java实现调用http请求的几种常见方式

    万次阅读 多人点赞 2019-05-25 02:23:36
    一、概述 在实际开发过程中,我们经常需要调用对方提供的...在Java项目中调用第三方接口的方式有: 1、通过JDK网络类Java.net.HttpURLConnection; 2、通过common封装好的HttpClient; 3、通过Apache封装好的Clos...
  • Java项目中调用第三方接口的几种方式: 通过JDK网络类 java.net.HttpURLConnection 通过common封装好的 HttpClient 通过Apache封装好的CloseableHttpClient 通过SpringBoot-RestTemplate 通过JDK网络类 java.net....
  • java代码调用http请求

    2019-10-07 07:12:17
    首先生成一个请求对象String url = "www.baidu.com";//设置url访问路径 HttpGet httpGet = new HttpGet(url); //生成一个http客户端对象 HttpClient httpclient = new DefaultHttpClient(); InputStream ...
  • 1.Java代码调用HTTP请求工具类import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache....
  • java Jsoup调用http请求contentType设定一、Jsoup是什么?二、使用Jsoup过程中遇到的问题和改正 一、Jsoup是什么? Jsoup是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的...
  • JAVA 调用HTTPPOST请求

    千次阅读 2016-05-27 17:12:05
    import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.apache.http.message.BasicHeader; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; i
  • java程序调用http请求

    2019-03-21 15:50:52
    在开发过程中,需要去文件服务器下载歌词文件,将歌词文件流...@RequestMapping(value = "/httpString") @ResponseBody public JSONObject httpString(AccompanyExam accompanyExam) throws Exception{ JSONObje...
  • 调用http接口数据 public static String doPost(String url, Map<String, String> bodyparams, Map<String, String> headerparams,String charset) { StringBuffer response = new StringBuffer(); ....
  • java后台调用http请求

    2017-12-26 16:43:00
    3:调用的其它项目中Controller层中的 send.do 方法实现 1 @RequestMapping("/send" ) 2 @ResponseBody 3 public String send(String username, String password, String apikey, String mobile, ...
  • java http请求调用

    千次阅读 2020-07-04 21:52:57
    java发送http请求的两种方式:HTTPClient和CloseableHttpClient 第一种方式 maven依赖如下 commons-httpclient commons-httpclient 第二种方式 maven依赖如下 org.apache.httpcomponents httpclient 4.5.2
  • java后台调用http请求,若有特殊字符需要转码: 转载于:https://www.cnblogs.com/time-on/p/7197094.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,216
精华内容 1,286
关键字:

java调用http请求

java 订阅