精华内容
下载资源
问答
  • Retrofit 网络请求框架现在比较流行 ,在开始网络请求时 经常需要构造(@Body RequestBody requestBody)相信很多开发小伙伴会利用生成Bean 的方式去构造RequestBoday 但是偶尔会遇到一种情况,那就是一个...

    Retrofit 网络请求框架现在比较流行 ,在开始网络请求时 经常需要构造(@Body RequestBody requestBody)

    相信很多开发小伙伴会利用生成Bean 的方式去构造RequestBoday 

    但是偶尔会遇到一种情况,那就是一个RequestBoday 里面的数据不多,但是嵌套的很深,如果这个时候去创建大量的对象,最后封装成一个RequestBoday 这样代码太过冗余

    所以可以利用一种新的方式:

    JSONObject root = new JSONObject();

    JSONObject requestData = new JSONObject();

    final JSONObject requestAttributes = new JSONObject();

    try {

        requestAttributes.put("reason", reason);

        requestData.put("type", "deleteAccount");

        requestData.put("attributes", requestAttributes);

        root.put("data", requestData);

    } catch (JSONException e) {

        e.printStackTrace();

    }

    LogUtils.d("DeleteAccountEndActivity reason =  " + reason);

    LogUtils.d("DeleteAccountEndActivity root =  " + root);

    RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), root.toString());

    LogUtils.d("DeleteAccountEndActivity requestBody =  " + requestBody);

    利用该requestBody 就可以了

    但是有一点需要注意:JSONObject 中的Value 不能为空

    GitHub:  https://github.com/HuaDanJson


    展开全文
  • @SuppressWarnings("deprecation") public static String upperPost(String url, String param, String appKey, String timesTamp, String signature) { String body = ""; try { ...

    @SuppressWarnings("deprecation")
        public static String upperPost(String url, String param, String appKey,
                String timesTamp, String signature) {
            String body = "";
            try {
                HttpClient hc = HttpClients.createDefault();
                // Post请求
                HttpPost httppost = new HttpPost(url);
                // 设置参数

                // 设置通用的请求属性

               //服务器接收数据类型
                httppost.setHeader("Accept", "application/json");
                httppost.setHeader("connection", "Keep-Alive");
                httppost.setHeader("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

                //接收数据格式
                httppost.setHeader("Accept-Charset", "UTF-8");

               //请求参数类型
                httppost.setHeader("content-type", "application/json;charset=UTF-8");
                // 平台请求头,拷贝代码这部分可以不用
                httppost.setHeader("Aplus-OpenAPI-Version", "1.0.0");
                httppost.setHeader("Aplus-OpenAPI-Access-Key-Id", appKey);
                httppost.setHeader("Aplus-OpenAPI-TimeStamp", timesTamp);
                httppost.setHeader("Aplus-OpenAPI-Signature-Nonce", timesTamp);
                httppost.setHeader("Aplus-OpenAPI-Signature-Version", "1.0");
                httppost.setHeader("Aplus-OpenAPI-Signature", signature);
                /* 设置参数 */
               //关键部分传参数,本文仅介绍穿string类型
                httppost.setEntity(new StringEntity(param, "UTF-8"));
                // 发送请求
                HttpResponse httpresponse = hc.execute(httppost);
                HttpEntity entity = httpresponse.getEntity();
                // 获取结果实体
                if (entity != null) {// 按指定编码转换结果实体为String类型
                    body = EntityUtils.toString(entity, "UTF-8");
                }
                // EntityUtils.consume(entity);
                hc.getConnectionManager().shutdown();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {

                e.printStackTrace();
            } catch (ParseException e) {

                e.printStackTrace();
            } catch (IOException e) {

                e.printStackTrace();
            }
            return body;
        }

    展开全文
  • 今天使用vue+axios出现错误: Error: Request failed with status code 400 此时表示请求到了服务器,但是解析数据的时候出现问题。 因为后台编译器不报错,...错误:Required request body is missing请求主体body

    今天使用vue+axios出现错误:

    Error: Request failed with status code 400
    在这里插入图片描述
    此时表示请求到了服务器,但是解析数据的时候出现问题。

    因为后台编译器不报错,打开浏览器的网络NetWork选项,查看问题。
    在这里插入图片描述
    可以看到错误:

    status: 400

    error: “Bad Request”

    message: Required request body is missing

    错误:Required request body is missing请求主体body丢失。

    错误代码:

        @GetMapping(path = "/search")
        public Object search(@RequestBody Company company){
            List<Company> companyList = companyService.findByExample(company);
            return Result.init(200,"查找成功",companyList);
        }
    

    错误原因:get请求是没有请求体body的,而注解@RequestBody是从请求体读取信息的,也就是说使用@RequestBody注解不支持get请求

    解决办法:
    将请求方式改为post等方式就可以解决问题

        @PostMapping(path = "/search")
        public Object search(@RequestBody Company company){
            List<Company> companyList = companyService.findByExample(company);
            return Result.init(200,"查找成功",companyList);
        }
    
    展开全文
  • retrofit中使用body标签传RequestBody

    万次阅读 2018-08-01 11:11:20
    现在的Android开发者基本上都用过retrofit这个第三方网络请求库吧!!! 网络请求中有get、post、delete和put等等请求方式。... getSystemContent(@Body RequestBody body); 可以注意到我们这里请求参数的标签用到...

    现在的Android开发者基本上都用过retrofit这个第三方网络请求库吧!!!

    网络请求中有get、post、delete和put等等请求方式。
    现在我们需要用到post请求:

    @POST("exec")
    Observable<HttpResult> getSystemContent(@Body RequestBody body);

    可以注意到我们这里请求参数的标签用到的是@Body,一般来说我们单个或者少个参数的时候用到的是@Field标签里面放的是单个数据比如:

    @POST("user/getParts.do")
        @FormUrlEncoded
        Observable<HttpResult<List<Model>>> getPart(@Field("userId") String userId);

    当参数个数过多时比如:

    @POST("calculate/saveLog.do")
        @FormUrlEncoded
        Observable<HttpResult<Object>> saveLog(@Field("userId") String userId,
                                               @Field("firmwareVersion") String firmwareVersion,
                                               @Field("appVersion") String appVersion,
                                               @Field("equipmentNumber") String equipmentNumber,
                                               @Field("log") String log
        );

    这就看起来有点恶心了,出现这种情况我们一般就会使用@FieldMap标签或者@Body

    @FieldMap标签:传入的就是一个map集合,把参数以键值对的方式添加到map中,然后在进行请求比如:

    @POST("calculate/saveLog.do")
        @FormUrlEncoded
        Observable<HttpResult<Object>> saveLog(@FieldMap Map<String,String> map);

    至于怎么把数据添加到map中我就不写了。

    @Body标签:传入的就是一个你创建的对象,把key值设置成该对象的属性,然后value就是该属性对应的值。比如:

    @POST("calculate/saveLog.do")
        Observable<HttpResult<Object>> saveLog(@Body DeviceBindBean bean);

    创建一个DeviceBindBean对象把对应的参数赋值给对应的属性,把该对象放进来作为请求参数。

    注:使用@body标签时不能用@FormUrlEncoded标签,不然会报以下异常:

    java.lang.IllegalArgumentException: @Body parameters cannot be used with form or multi-part encoding. (parameter #1)

    我这里主要讲的就是参数是RequestBody,改对象是在okhttp包下的。我们现在的项目就是一个通过加密生成的String字符串放入我们的请求body中作为参数请求服务器。

    在请求的时候:

    RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), bodyStr);

    把该body作为参数传递给服务器即可,用法还是和正常的retrofit一样。

    展开全文
  • requestBody注解的正确使用

    万次阅读 多人点赞 2018-07-10 22:49:05
    我就三下五除二的将接口给写好了,稍微的模拟测试了下,觉得没毛病了,我就直接给部署到测试环境了.(这里提一句,由于我本地的网络是公司内网,所以阿里云的接口是回调不了的,只好给部署到测试环境进行最终测试.)在这期间...
  • 平时用到的请求参数是写入表头内部,但是如果遇到把内容...body"标签内的请求方式,又要使用别的方式进行处理,以xutils为例: 在parame内添加body内容的方式十分简单: 调取requestparams的setbodycontent即可 ...
  • 如果我们使用vue来构架前端项目,我为自己设计了这样的一个小型架构,参考上一遍文章:《Jquery微型架构:requestBody网络请求的模式与自定义协议的封装》,在次基础上做了一些改变。 一、 首先是程序架构 其中包含...
  • 如果使用jquery,异步请求很方便。 我们的项目,后台使用...请求方式也全部统一成了post请求,所有协议和请求参数,一级返回的协议和数据也都全部打包生成json,构建到RequestBody中进行发送。 我本来是做Android的,
  • Spring Cloud Gateway -- 修改RequestBody和Head前言读取和修改RequestBody修改Head添加路由 前言 目前项目有个需求,前端POST请求需要以xml形式传输,后端接口有些返回的是JSON格式有些返回的XML格式并且由于网络...
  • 今天使用vue+axios出现错误: Error: Request failed with status code 400 此时表示请求到了服务器,但是解析数据的时候出现问题。 因为后台编译器不报错,打开浏览器的网络...message: Required request body ...
  • 在接入Spring-Cloud-Gateway时,可能有需求进行缓存Json-Body数据或者Form-Urlencoded数据的情况。 由于Spring-Cloud-Gateway是以WebFlux为基础的响应式架构设计,所以在原有Zuul基础上迁移过来的过程中,传统的编程...
  • 因此这就涉及到了如何和网络交互。Flutter dart:io库默认提供HttpClient可以访问网络数据,但是httpClient使用相对复杂一些,于是Dart官方提供的另一个网络请求库http,HttpClient 和 http这二者对于网络请求的定制...
  • 开发中使用@RequestBody报415的错误 我在AJAX参数里面加了一个属性: contentType : 'application/json', dataType : "JSON", //同时将数据转化为JSON字符串 因为网络不能传输对象 data : JSON.stringify...
  • 在接入Spring-Cloud-Gateway时,可能有需求进行缓存Json-Body数据或者Form-Urlencoded数据的情况。由于Spring-Cloud-Gateway是以WebFlux为...网络上有许多缓存案例,但是在测试过程中出现各种Bug问题,在缓存Body时...
  • for (File file : list) { RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); MultipartBody.Part filePart = MultipartBody.Part.createFormData("picture", file....
  • 最近加入了JWT(json web token)为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。导致处理问题。 上传文件失败问题描述 加入jwt之后,上传文件需要添加header,进行token认证。导致现在上传后返回...
  • 最近测试低版本兼容性时发现的问题,使用NoHTTP第三方框架发送DELETE请求时出现的错误。...但HttpURLConnection在5.0以下的系统中DELETE请求方法不允许发送body。 解决方案: 更换NoHTTP网络层为OKHTTP。 如果要...
  • 左边的swagger上看起来是正常的,网络上很多人都是用这种@Requestbody方式,但是我们约定的是form-data,所以不能使用@Requestbody接收参数。而如果不用,那么swagger文档上看到的都是全部铺开的,不是很方便使用。...
  • 网络上对这个问题的分析及解决不是很深入,大部分并不能解决问题,而且内容基本相同,拿来主义,把内容放在自己的博客上!报错原因可能有两种情况:1.请求头中没有设置Content-Type参数,或Content-Type参数值不是...
  • 前言Retrofit 是目前主流的网络请求框架,不少用过的小伙伴会遇到这样的问题,绝大部分接口测试都正常,就个别接口尤其是返回失败信息时报了个奇怪的错误信息,而看了自己的代码逻辑也没什么问题。别的接口都...
  • 网络上对这个问题的分析及解决不是很深入,大部分并不能解决问题,而且内容基本相同,拿来主义,把内容放在自己的博客上!文章链接:http://www.jianshu.com/p/7ed3d4a44efc
  • vue-request发起网络数据请求

    千次阅读 2019-12-27 20:52:01
    首先要引入vue-request.js,且顺序在vue.js后面,vue-request.js依赖与vue.js //get方式发起网络数据请求 getInfo(){ this.$http.get('URL').then(function(result){ console.log(result.body) }) } //post方式发起...
  • 在 WEB 中,对于网络请求一直使用的是 XMLHttpRequest API 来处理,XMLHttpRequest 也很强大,传统的 Ajax 也是基于此 API 的。那么为什么 W3C 标准中又加入了类似功能的 Fetch API 呢?他有何优势。 Fetch 什么是 ...
  • 今天使用vue+axios出现错误: Error: Request failed with status code 400 此时表示请求到了服务器,但是解析数据的时候出现问题。 因为后台编译器不报错,打开浏览器的网络...message: Required request body ...
  • def __init__(self, url, callback=None, method='GET', headers=None, body=None, cookies=None, meta=None, encoding='utf-8', priority=0, dont_filter=False, errback=None, flags=None, cb

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 340
精华内容 136
关键字:

网络requestbody