建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

外围的小尘埃

发帖: 427粉丝: 10

发消息 + 关注

发表于2021年02月26日 15:23:48 218 2
直达本楼层的链接
楼主
显示全部楼层
[技术讨论] 如何在java中发起http请求

注意:get请求中参数值为中文的必须通过URLEncoder.encode("参数","utf-8");进行转义

http请求类

public class SendHttpRequest {

    /**

     * post请求方法

     * @param url 请求地址

     * @param params  参数

     * @return

     */

    public static String sendPost(String url, Map<String,Object> params) {

        String response = null;

        try {

            List<BasicNameValuePair> pairs = null;

            if (params != null && !params.isEmpty()) {

                pairs = new ArrayList<>(params.size());

                for (String key : params.keySet()) {

                    pairs.add(new BasicNameValuePair(key, params.get(key).toString()));

                }

            }

            CloseableHttpClient httpclient = null;

            CloseableHttpResponse httpresponse = null;

            try {

                httpclient = HttpClients.createDefault();

                HttpPost httppost = new HttpPost(url);

                // StringEntity stringentity = new StringEntity(data);

                if (pairs != null && pairs.size() > 0) {

                    httppost.setEntity(new UrlEncodedFormEntity(pairs,"UTF-8"));

                }

                httpresponse = httpclient.execute(httppost);

                response = EntityUtils.toString(httpresponse.getEntity());

            } finally {

                if (httpclient != null) {

                    httpclient.close();

                }

                if (httpresponse != null) {

                    httpresponse.close();

                }

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

        return response;

    }

 

    /**

     * get请求方法

     * @param url 地址

     * @param param 参数,格式name=韦小宝&age=12,中文必须通过URLEncoder.encode()进行转义

     * @return

     */

    public static String sendGet(String url, String param) {

        String result = "";

        BufferedReader in = null;

        try {

            String urlName = "";

            if (param.length() != 0) {

                urlName = url + "?" + param;

            } else {

                urlName = url;

            }

            URL resUrl = new URL(urlName);

            URLConnection urlConnec = resUrl.openConnection();

            urlConnec.setRequestProperty("accept", "*/*");

            urlConnec.setRequestProperty("connection", "Keep-Alive");

            urlConnec.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

            urlConnec.connect();

            Map<String, List<String>> map = urlConnec.getHeaderFields();

            for (String key : map.keySet()) {

                System.out.println(key + "--->" + map.get(key));

            }

            // 定义 BufferedReader输入流来读取URL的响应

            in = new BufferedReader(new InputStreamReader(urlConnec.getInputStream()));

            String line;

            while ((line = in.readLine()) != null) {

                result += line;

            }

        } catch (Exception e) {

            System.out.println("发送get请求失败" + e);

            e.printStackTrace();

        } finally {

            try {

                if (in != null) {

                    in.close();

                }

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

        return result;

    }

 

 

    public static void main(String[] args) {

        //post请求测试

      /*  Map<String,Object> map = new HashMap<String,Object>();

        map.put("name","韦小宝");

        map.put("age",120);

        String resultPost = sendPost("http://localhost:8080/ModelTest1/test/getUserPost",map);

        System.out.println(resultPost);*/

 

        //get请求测试

        String name;

        try {

            //因为是中文  所以需要转义

            name = URLEncoder.encode("工厂","utf-8");

            String resultGet = sendGet("http://localhost:8080/ModelTest1/test/getUserGet","name="+name+"&age=1");

            System.out.println(resultGet);

        }catch (Exception e){

            e.printStackTrace();

        }

    }

}



测试接口

@ResponseBody

    @RequestMapping(value = "getUserGet",method = RequestMethod .GET)

    public String getUserGet(HttpServletRequest request, HttpServletResponse response,String name,int age) throws IOException {

        System.out.println(name);

        System.out.println(age);

        Map map2 = new HashMap();

        map2.put("name","aaa");

        map2.put("age",2);

        return JSON.toJSONString(map2);

    }

 

    @ResponseBody

    @RequestMapping(value = "getUserPost",method = RequestMethod .POST)

    public String getUserPost(HttpServletRequest request, HttpServletResponse response,String name,int age) throws IOException {

        System.out.println(name);

        System.out.println(age);

        Map map2 = new HashMap();

        map2.put("name","aaa");

        map2.put("age",2);

        return JSON.toJSONString(map2);

    }


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

Linton林小顿

发帖: 152粉丝: 6

发消息 + 关注

发表于2021年02月26日 17:13:33
直达本楼层的链接
沙发
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复
发表于2021年02月26日 21:26:52
直达本楼层的链接
板凳
显示全部楼层

很详细  感谢分享哦

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200