精华内容
下载资源
问答
  • httpget请求
    千次阅读
    2022-03-10 20:31:44

    get请求一般不建议发送JSON格式的数据,单总有一些奇葩系统要求

    分享下本人对接途牛 传递get请求 json数据的方法

    第一步:平常的get请求不要想了 直接继承

    
    import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
    
    import java.net.URI;
    
    public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
        private final static String METHOD_NAME = "GET";
    
        @Override
        public String getMethod() {
            return METHOD_NAME;
        }
        public HttpGetWithEntity() {
            super();
        }
        public HttpGetWithEntity(final URI uri) {
            super();
            setURI(uri);
        }
        HttpGetWithEntity(final String uri) {
            super();
            setURI(URI.create(uri));
        }
    }

    第二步

        public String getDataToJson(String var1, String jsonText) {
            String var4 = null;
            CloseableHttpClient var5 = HttpClients.createDefault();
            try {
                HttpGetWithEntity httpGetWithEntity = new HttpGetWithEntity(var1);
                HttpEntity httpEntity = new StringEntity(jsonText, ContentType.APPLICATION_JSON);
                httpGetWithEntity.setEntity(httpEntity);
                CloseableHttpResponse response = var5.execute(httpGetWithEntity);
               /** 此步自己处理返回结果 我这里有个工具类 所以不要复制了
               *  可以使用  HttpEntity httpEntity = httpResponse.getEntity();
               *  result = EntityUtils.toString(var1, "UTF-8")
               */
                var4 = responseToResult(response);
            } catch (Exception e) {
                log.error("调用get请求Error:" + e.getMessage());
                e.printStackTrace();
            }
            return var4;
        }

    这样就可以了

    即使这样解决了get 加body 体传参,但是仍建议大家使用post方式发送JSON格式数据

    更多相关内容
  • 我是如何实现HttpGet请求传body参数的!

    万次阅读 多人点赞 2020-11-19 14:19:49
    最近调用公司项目一个接口时,发现该接口是一个Get请求,入参在Body 中(json格式)。场景如下:A服务需发送http请求调用B服务的接口(该接口为Get方式,入参是一个json字符串在body中传递) 当我看到这个接口的时候...

    前言

    最近调用公司项目一个接口时,发现该接口是一个Get请求,入参在Body 中(json格式)。场景如下:A服务需发送http请求调用B服务的接口(该接口为Get方式,入参是一个json字符串在body中传递)
    当我看到这个接口的时候,感觉好奇怪(MMP,干嘛不用POST请求。Get就get,请求还放Body中,心里有些不爽)尽管心里不爽,但是也只能默默接受,撸起袖子 “干” 就完了!

    实现过程:

    首先官方不推荐这样做,但是http(基于tcp的超文本传输协议)并没有规定,Get 请求不能加body
    一.首先我写了一个Get请求接口,本地测试一下,便于大家直观的理解
    在这里插入图片描述
    调用成功:
    在这里插入图片描述
    本地使用postman调用是成功的,接下来我们使用Java代码请求调用
    二.使用Http工具类调用Get请求(json参数)
    1.引入httpclient 依赖

           <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.6</version>
            </dependency>
    

    2.定义一个HttpGet实体类

    import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
    import java.net.URI;
    /**
     * @author xf
     * @version 1.0.0
     * @ClassName HttpGetWithEntity
     * @Description TODO 定义一个带body的GET请求 继承 HttpEntityEnclosingRequestBase
     * @createTime 2020.11.18 13:51
     */
    public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
        private final static String METHOD_NAME = "GET";
    
        @Override
        public String getMethod() {
            return METHOD_NAME;
        }
        public HttpGetWithEntity() {
            super();
        }
        public HttpGetWithEntity(final URI uri) {
            super();
            setURI(uri);
        }
        HttpGetWithEntity(final String uri) {
            super();
            setURI(URI.create(uri));
        }
    
    }
    

    3.HttpGet请求公共方法

        /**
         * 发送get请求,参数为json
         * @param url
         * @param param
         * @param encoding
         * @return
         * @throws Exception
         */
        public static String sendJsonByGetReq(String url, String param, String encoding) throws Exception {
            String body = "";
            //创建httpclient对象
            CloseableHttpClient client = HttpClients.createDefault();
            HttpGetWithEntity httpGetWithEntity = new HttpGetWithEntity(url);
            HttpEntity httpEntity = new StringEntity(param, ContentType.APPLICATION_JSON);
            httpGetWithEntity.setEntity(httpEntity);
            //执行请求操作,并拿到结果(同步阻塞)
            CloseableHttpResponse response = client.execute(httpGetWithEntity);
            //获取结果实体
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                //按指定编码转换结果实体为String类型
                body = EntityUtils.toString(entity, encoding);
            }
            //释放链接
            response.close();
            return body;
        }
    

    4.运行服务,本地测试调用一下该接口

    
        /**
         * 测试 Get 请求
         */
        @Test
        public void test(){
            String url = "http://127.0.0.1:8012/export/getByBodyJson";
            Map<String, Object> map = new HashMap<>();
            map.put("stuName","张一山");
            map.put("school","北京戏剧学院");
            String reqParams = JSONArray.toJSON(map).toString();
            try {
                String s = sendJsonByGetReq(url, reqParams, "UTF-8");
                System.out.println("请求Get请求返回结果:"+s);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    三.使用HttpGet请求发送body入参调用成功
    在这里插入图片描述

    尽管这样解决了get 加body 体传参,但是仍建议大家使用post 加body!

    展开全文
  • HttpGet 请求(带参数)

    千次阅读 2021-03-08 09:07:32
    // 创建请求对象 HttpGet httpGet = new HttpGet(sb.toString()); // 设置参数 HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(params, 5000); HttpConnectionParams....

    package com.example.util;

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.net.HttpURLConnection;

    import java.net.MalformedURLException;

    import java.net.URL;

    import org.apache.http.HttpEntity;

    import org.apache.http.HttpResponse;

    import org.apache.http.client.ClientProtocolException;

    import org.apache.http.client.HttpClient;

    import org.apache.http.client.methods.HttpGet;

    import org.apache.http.impl.client.DefaultHttpClient;

    import org.apache.http.params.BasicHttpParams;

    import org.apache.http.params.HttpConnectionParams;

    import org.apache.http.params.HttpParams;

    import org.apache.http.util.EntityUtils;

    public class MyUtils {

    private static InputStream result;

    public static InputStream getJson1FromWeb(String url) {

    HttpGet get = new HttpGet(url);

    HttpParams params = new BasicHttpParams();

    HttpConnectionParams.setConnectionTimeout(params, 5 * 1000);

    HttpConnectionParams.setSoTimeout(params, 5 * 1000);

    HttpClient client = new DefaultHttpClient(params);

    HttpResponse response;

    try {

    response = client.execute(get);

    if (response.getStatusLine().getStatusCode() == 200) {

    HttpEntity entity = response.getEntity();

    result = entity.getContent();

    }

    } catch (ClientProtocolException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    return result;

    }

    public static String getJson2FromWeb(String url, String id, int p) {

    StringBuffer sb = new StringBuffer(url);

    sb.append("&catalog_id=" + id);

    sb.append("&pn=" + p);

    String data = "";

    // 创建请求对象

    HttpGet httpGet = new HttpGet(sb.toString());

    // 设置参数

    HttpParams params = new BasicHttpParams();

    HttpConnectionParams.setConnectionTimeout(params, 5000);

    HttpConnectionParams.setSoTimeout(params, 5000);

    // 执行请求的对象

    HttpClient client = new DefaultHttpClient(params);

    // 执行请求镀锡

    try {

    HttpResponse resp = client.execute(httpGet);

    // 判断是否响应成功

    if (resp.getStatusLine().getStatusCode() == 200) {

    // 获取响应 的数据

    HttpEntity entity = resp.getEntity();

    data = EntityUtils.toString(entity, "utf-8");

    }

    } catch (ClientProtocolException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    return data;

    }

    public static String getWeb(String path){

    URL url=null;

    HttpURLConnection connection=null;

    BufferedReader br=null;

    StringBuffer sb=new StringBuffer();

    try {

    url=new URL(path);

    connection=(HttpURLConnection) url.openConnection();

    if(connection.getResponseCode()==200){

    br=new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));

    String str=null;

    while((str=br.readLine())!=null){

    sb.append(str);

    }

    }

    } catch (MalformedURLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    return sb.toString();

    }

    }

    原文:http://www.cnblogs.com/wbp0818/p/5458631.html

    展开全文
  • C# 实现HttpGet请求

    千次阅读 2021-01-05 14:47:39
    /// HTTP Get请求 /// </summary> /// <param name="url">API地址</param> /// <param name="encode">编码</param> public static String GetData(String url, En

    转载自:https://www.cnblogs.com/laikwan/p/9025126.html
    代码部分;

    /// <summary>
    /// HTTP Get请求
    /// </summary>
    
    /// <param name="url">API地址</param>
    
    /// <param name="encode">编码</param>
    
    
    public static String GetData(String url, Encoding encode)
    {
    
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
      request.Method = "GET";
      request.ContentType = "text/html, application/xhtml+xml, */*";
    
      HttpWebResponse response = (HttpWebResponse)request.GetResponse();
      Stream rs = response.GetResponseStream();
      StreamReader sr = new StreamReader(rs, encode);
      var result = sr.ReadToEnd();
      sr.Close();
      rs.Close();
      return result;
    
    }
    

    传入我们需要的API地址,以及得到结果的编码,如Encoding.UTF-8;

    对于Get请求比较简单,首先创建HttpWebRequest对象:

    调用传入的Url

    设置请求方式 如:Method = “GET” ;

    请求的内容格式 如:.ContentType = “text/html, application/xhtml+xml, /”;(不熟悉的小伙伴可以看这里的对照表:http://tool.oschina.net/commons )

    然后获取响应内容,通过流对象StreamReader保存,再根据我们所需的编码(如:Encoding.UTF-8)解读出来即可。

    以及别忘了导入命名空间using System.IO;和using System.Net;。

    展开全文
  • java发送http get请求的两种方法(总结)

    千次阅读 2021-02-12 10:57:36
    长话短说,废话不说一、第一种方式,通过HttpClient方式,代码如下:public static String httpGet(String url, String charset)throws HttpException, IOException {String json = null;HttpGet httpGet = new ...
  • JavaScript中的HTTP GET请求

    千次阅读 2019-12-21 13:02:25
    我需要在JavaScript中执行HTTP GET请求。 最好的方法是什么? 我需要在Mac OS X破折号小部件中执行此操作。
  • Java实现HTTP Get请求

    千次阅读 2018-11-14 15:28:02
    import org.apache.http.HttpEntity; import org.apache.... import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; ...
  • python实现http get请求

    万次阅读 2020-08-13 16:28:43
    接口请求方式为get请求,如下图抓包查看 Python实现脚本请求接口并以中文打印接口返回的数据 ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 寻找有志同道合的小伙伴,互帮互助,群里还有不错...
  • HTTP GET请求方式传递数组参数

    万次阅读 2020-08-04 20:28:15
    http GET请求方式如何传递数组参数?一起来看看。 先在本地服务器上来一个controller方法,我们把接收到的参数打印在控制台上,顺便多此一举地返回一下响应结果 用postman请求一下: 再来看看控制台的打印结果 ...
  • 一般get请求传参数,都是URL后面直接?key=value&key2=value2 。。。。 使用 org.apache.http.impl.client.HttpClients 这么滴就可以实现get请求传递参数啦 但是现在需求是要往请求的header里面传cookie。 ...
  • 最近使用了apache olingo这个库,前端发送get请求的时候,有些请求的参数是放在header里面的。常见的get请求就是把参数拼接在url后面,就想了一下这两种方式有什么不一样 网上的相关信息较少(还没时间去看英文文档...
  • http GET 请求 URL 总结

    千次阅读 2018-08-17 19:06:15
    对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据) 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据) ...
  • http GET请求方式传递数组参数

    千次阅读 2019-11-07 14:02:24
    异常记录 异常:java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 原因: ...
  • HttpGet请求传递数组(集合)

    千次阅读 2019-09-20 17:00:11
    HttpGet请求是传递数组(集合)的方法: 1.使用Ajax方法传递 eg: ajax.({ url:/test, data:["1","2"], type:"get" }); 2.通过url直接传递的方式 这种方式我是通过第一种Ajax方法传递时,用...
  • HTTP GET请求实际上也是能在请求体中带参数的,只不过有些 服务器 (尤其是缓存代理服务器)可能不支持这种方式而已。而ES的设计者认为GET比较符合检索信息的这个动作,比POST要好,所以使用了GET请求,不过为了与...
  • 文章目录一、打开node-red二、设置get请求2.1 设置http模块参数2.2 设置 debug 方便调试三、设置 response 参数四、运行测试4.1 携带参数进行测试 一、打开node-red 版本为 0.20.8 二、设置get请求 拉取http模块 ...
  • 发送http get请求,并返回相应内容

    千次阅读 2018-07-16 10:51:04
    public static &lt;T&gt; T executeGetRequest(String url,Map&lt;String,String&gt; headers,Map&lt;String,String&... params,HttpEntityHandler&... /** 创建发起请求的 client对象 ...
  • 详解HTTP GET请求

    千次阅读 2016-07-14 15:38:50
    实例1:NodeMcu通过TCP实现HTTP GET请求(无请求主体)srv = net.createConnection(net.TCP, 0) srv:on("receive", function(sck, c) print(c) end) srv:connect(80,"fanyi.youdao.com") srv:on("connection", ...
  • 关于HTTP GET请求的url中文参数编码

    千次阅读 2019-02-28 13:55:46
    场景:前端用JS构造了一个GET请求,携带了一个中文的参数,通过Spring MVC传到后台以后解析中文是乱码。 1. 发送请求,从浏览器中捕获到http的请求内容如下: 1 Remote Address:[::1]:8080 2 Request URL:...
  • 关于Http Get请求是否可携带Body

    万次阅读 2019-01-16 13:52:37
    Apache Http Client 和 OkHttpClient 都不支持 GET 请求发送 Body 数据,而 AsyncHttpClient 是可以的。 那么回过头来想想为什么 HTTP 并未规定不可以 GET 中发送 Body 内容,但却不少知名的工具不能用 GET 发送 ...
  • HTTP GET请求302重定向问题

    千次阅读 2018-10-26 11:58:00
    1.问题描述 ① 在华为云服务器中搭建了java环境,并在tomcat中部署了一个空的web项目 ② 在此web项目中上传了一个名为:plugin_DTDREAM_LIVING_DEHUMIDIFIER... http://x.x.x.x:8002/plug/plugin_DTDREAM_LIVING_...
  • http get请求传递数组类型参数

    千次阅读 2019-05-22 11:12:00
    http://abc.cn/api/test/orders?orderNos[]=123456&loginName=121&PageIndex=1&PageSize=10&NoPage=false&orderNos[]=12 转载于:https://www.cnblogs.com/jeffhong99/p/10904724...
  • 本示例记录利用kettle中的httpClient组件来调用get请求方式的api接口来获取数据。 总览: 通常调用http client组件前需要有获取数据的相关组件 http client组件中选择 从字段中获取URL,并选择URL字段名称:...
  • HTTP GET请求的最大长度?

    千次阅读 2020-01-23 09:59:25
    HTTP GET请求的最大长度是多少? 是否定义了一个响应错误,如果服务器收到超过此长度的GET请求,服务器可以/应该返回该错误? 更新:如标记中所示,这是在Web服务API的上下文中,尽
  • http get请求 传参 接收写法

    千次阅读 2016-11-16 14:10:16
    http://10.0.0.60:8080/idc-http/yundou/select/1111111 ... @RequestMapping(value="/select/{imei}",method = RequestMethod.GET) @ResponseBody public String select(HttpServletRequest request,@PathV
  • http get请求发送失败,返回304错误

    千次阅读 2017-09-12 17:37:13
    百度发现是浏览器缓存问题,将同一个链接认为是相同的请求,所以便没有往服务器端发送该请求以致于设置失败。 所以解决办法:在发送url时加上一个随机数,通常是时间如: url+='&' + new Date().getTime() + ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,281,369
精华内容 512,547
关键字:

httpget请求

友情链接: eger-gui.rar