精华内容
下载资源
问答
  • 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


    展开全文
  • (一)首先说明xia @requestBody与@requestParam的区别 spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头。都是用来获取请求路径(url )中的动态参数。也就是在url中,格式为xxx?username=...

    (一)首先说明xia @requestBody与@requestParam的区别

      spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头。都是用来获取请求路径(url )中的动态参数。也就是在url中,格式为xxx?username=123&password=456。功能与@pathvarible。

    RequestBody注解接收的参数则是来自于requestBody中,即请求体中。

    知识点:

    (二)Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因。

     

    (三)问题,@requestBody到底在什么时候写与不写呢。

    看现象如下:发现ajaxDate有若干种写法。

    (1)直接写名传参。如下:

     打印ajaxDate如下格式:

    虽然打印结果是json对象式,但最后会转为key1=value1&key2=value2的格式提交到后台 ,不需要加@requestBody。 

    (2)serializeble实例化表单

    打印结果如下:

    表单 格式使用的是默认的ContentType类型application/x-www-form-urlencoded,格式为key1=value1&key2=value2提交到后台 ,不需要加@requestBody。 

    (3)contentType转化之后,需要加@requestBody,controller才能接收到数据。 

    ajaxDate打印结果如下:

     

    post和get功能相同。

     

     前台将ajaxData转为json字符串,后台必须加@RequestBody注解的属性才能自定映射到值。

    为什么有的需要加@requestBody,有的不需要。加与不加的区别如下:

    使用@requestBody.当请求content_type为:application/json类型的请求,数据类型为json时, json格式如下:{"aaa":"111","bbb":"222"}

    不使用@requestBody.当请求content_type为:application/x-www-form-urlencoded类型的或multipart/form-data时,数据格式为aaa=111&bbb=222。

    JQuery的$.ajax(url,[settings]) 
    1.默认的ContentType的值为:application/x-www-form-urlencoded; charset=UTF-8 
    此格式为表单提交格式,数据为key1=value1&key2=value2的格式 。图二serrializeble,只用的是默认contentType类型。
    2.虽然ajax的data属性值格式为:{key1:value1,key2:value2},但最后会转为key1=value1&key2=value2的格式提交到后台 。

    图二,虽然打印出的结果是不是&格式的,但是会转化。
    3.如果ajax要和springmvc交互,要使用key1=value1&key2=value2的格式,后台springmvc只需要定义对象或者参数就行了,会自动映射。 
    4.如果springmvc的参数有@RequestBody注解(接收json**字符串**格式数据),ajax必须将date属性值转为json字符串,不能为json对象(js对象,会自动转为key=value形式)。并且,修改contentType的值为:application/json; charset=UTF-8,这样加了@RequestBody注解的属性才能自定映射到值。

    5.使用在进行图片或者文件上传时使用 multipart/form-data 类型时、 数据会自动进行映射不要添加任何注解。

    展开全文
  • Postman-Request Body类型

    千次阅读 2019-09-11 15:37:29
    Request Body While constructing requests, you'll work frequently with the request body editor. Postman lets you send almost any kind of HTTP requ...

    Request Body

    While constructing requests, you'll work frequently with the request body editor. Postman lets you send almost any kind of HTTP request. The body editor is divided into five areas and has different controls, depending on the body type.

    当构建请求时,你讲经常性地和request body编辑器打交道。Postman允许你发送几乎所有的HTTP请求。body编辑器被分为5部分,有不同的约束和限制,这取决于body的类型。

    Note about Headers: When you are sending requests through the HTTP protocol, your server might expect a Content-Type header. The Content-Type header allows the server to parse the body properly. For form-data and urlencoded body types, Postman automatically attaches the correct Content-Type header so you don't have to set it. The raw mode header is set when you select the formatting type. If you manually use a Content-Type header, that value takes precedence over what Postman sets. Postman does not set any header type for the binary body type.

    注意请求头Headers: 当你通过HTTP协议发送请求时,你的服务器可能会期待着接收到一个 Content-Type (内容类型) 的请求头。这个Content-Type请求头将使服务器可以恰当地解析请求头。对于 form-data 和 urlencoded 的 body 请求体类型,Postman自动地附带上正确的 Content-Type请求头,所以你没有必要去设置它。raw 模式的 请求体可以在你选择 格式化/排版 类型时选定。 如果你手动地设置一个 Content-Type 请求头,你所设定的值将优先于Postman的设置。Postman不会再 binary 请求头中设置任何请求头类型。

    None

    Postman defaults to 'none' option whenever you send a request. Choose this option if you don't want to send body with your request. If your request has a body, you may choose an appropriate option available there. The default body option appears as below:

    不管你任何时候发送一个请求,Postman默认都摸摸人使用 none 选项。如果你不想在你的请求中发送任何请求体,那就选这个选项。如果你的请求确实有请求体,你可以选择一个合适的选项。默认的请求体选项如下:

    Form-data

    form-data

    multipart/form-data is the default encoding a web form uses to transfer data. This simulates filling a form on a website, and submitting it. The form-data editor lets you set key-value pairs (using the data editor for your data. It also lets you specify the content type for each part of a multi-part form request individually. You can attach files to a key as well. When you repeatedly make API calls that require sending these files again and again, Postman persists your file paths for subsequent use. This also helps you run collections that contain requests requiring file upload.

    Uploading multiple files each with their own Content-Type is not supported yet.

    multipart/form-data是默认用来转换网络表单为数据的请求体类型。它模拟了在一个网站上填写一个表单,然后进行提交。form-data 编辑器允许你设置 键值对( key-value) (对你的数据使用 data editor)。它同样允许你为multi-part表单请求的每一部分都表明内容类型。你也可以将一个文件加载到一个key上面。当你做那些需要一遍又一遍地发送这些文件的重复性API请求时,Postman为随后的请求保留你的文件路径。这同样可以帮助你运行那些含有需要文件上传的请求集合。

    Urlencoded

    urlencoded data

    This encoding is the same as the one used in URL parameters. You just need to enter key-value pairs and Postman will encode the keys and values properly. Note that you cannot upload files through this encoding mode. There might be some confusion between form-data and urlencoded so make sure to check with your API first.

    这种编码方式和 URL 参数方式是一样的。你只需要输入键值对,Postman就会将这些键值对恰当地编码。注意,你不能通过这种编码方式来上传文件。在 form-data和urlencoded 这两种方式之间可能有些混淆,所以一定要先检查你的API。

    Raw

    raw data

    A raw request can contain anything. Postman doesn’t touch the string entered in the raw editor except replacing environment variables. Whatever you put in the text area gets sent with the request. The raw editor lets you set the formatting type along with the correct header that you should send with the raw body. You can set the Content-Type header manually too and this will override the Postman defined setting. Selecting XML/JSON in the editor type enables syntax highlighting for your request body and also sets the Content-Type header.

    raw(原始) 请求可以包含任何类型的数据。Postman不会接触 输入到 raw 编辑器中的字符串,除非它取代环境变量。不管你在这个文本域中放入什么,它都会被发送到请求中。raw 编辑器允许你设置 带有正确的 请求头 的 排版类型,你应该使用 raw 请求体。你也可以手动地设置 Content-Type 请求头,而这将会改写Postman的设置。在编辑类型中选择XML/JSON可以让你的请求体 语法高亮,同时也可以设置 Content-Type请求体。

    Tip: Selecting text in the editor and pressing CMD/CTRL + B can beautify the XML/JSON content automatically.

    Tip: 在编辑器中选择文本,然后按 CMD/CTRL+B 可以让 XML/JSON内容自动地美化。

    Binary

    binary data

    Binary data allows you to send things which you can not enter in Postman, for example, image, audio, or video files. You can send text files as well.

    Binary (二进制) 数据允许你发送不能进入Postman的数据,比如,图片,音频或者视频文件。你也可以发送文本文件。

    转载于:https://my.oschina.net/u/3412738/blog/3060418

    展开全文
  • 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一样。

    展开全文
  • @SuppressWarnings("deprecation") public static String upperPost(String url, String param, String appKey, String timesTamp, String signature) { String body = ""; try { ...
  • Required request body is missing 错误解决

    万次阅读 多人点赞 2019-01-15 14:03:52
    ERROR c.j.d.a.c.PartCleanController - Required request body content is missing: org.springframework.web.method.HandlerMethod$HandlerMethodParameter@8141deef org.springframework.http.c...
  • requestBody注解的正确使用

    万次阅读 多人点赞 2018-07-10 22:49:05
    我就三下五除二的将接口给写好了,稍微的模拟测试了下,觉得没毛病了,我就直接给部署到测试环境了.(这里提一句,由于我本地的网络是公司内网,所以阿里云的接口是回调不了的,只好给部署到测试环境进行最终测试.)在这期间...
  • Required request body is missing,400错误,Bad Request

    千次阅读 多人点赞 2020-12-04 19:08:53
    今天使用vue+axios出现错误: Error: Request failed with status code 400 此时表示请求到了服务器,但是解析数据的时候出现问题。 因为后台编译器不报错,...错误:Required request body is missing请求主体body
  • 平时用到的请求参数是写入表头内部,但是如果遇到把内容...body"标签内的请求方式,又要使用别的方式进行处理,以xutils为例: 在parame内添加body内容的方式十分简单: 调取requestparams的setbodycontent即可 ...
  • 如果我们使用vue来构架前端项目,我为自己设计了这样的一个小型架构,参考上一遍文章:《Jquery微型架构:requestBody网络请求的模式与自定义协议的封装》,在次基础上做了一些改变。 一、 首先是程序架构 其中包含...
  • request body stream exhausted错误解决方案

    千次阅读 2015-11-05 20:32:09
    AFNetworking 2.0上传图片时的...Error Domain=NSURLErrorDomain Code=-1021 "request body stream exhausted" UserInfo={NSUnderlyingError=0x1522c29d0 {Error Domain=kCFErrorDomainCFNetwork Code=-1021 "reques
  • OKhttp FormBody和RequestBody的不同

    万次阅读 2019-01-12 14:29:00
    大纲 GET请求 POST请求 RequestBody--json数据提交 FormBody--表单数据提交 MultipartBody--文件上传 一、Get请求 一个最简单的使用okhttp进行网络请求的例子,get获取访问网页的内容,返回的即是这个网页的html,将...
  • 如果使用jquery,异步请求很方便。 我们的项目,后台使用...请求方式也全部统一成了post请求,所有协议和请求参数,一级返回的协议和数据也都全部打包生成json,构建到RequestBody中进行发送。 我本来是做Android的,
  • @RequestBody出现请求415问题

    万次阅读 2018-07-23 10:26:53
    问题:在前端向后台发送一个json对象(字符串),后端用@RequestBody匹配接受的时候就会出现415,如果不用@RequestBody,那么前端发送来的数据是不能被正确解析成对象里的属性的。 因为用公司的框架写项目的时候...
  • Spring Cloud Gateway -- 修改RequestBody和Head前言读取和修改RequestBody修改Head添加路由 前言 目前项目有个需求,前端POST请求需要以xml形式传输,后端接口有些返回的是JSON格式有些返回的XML格式并且由于网络...
  • 一)首先说明xia @requestBody与@requestParam的区别 spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头。都是用来获取请求路径(url )中的动态参数。也就是在url中,格式为xxx?username=123&...
  • 在使用Json传值并且使用@RequestBody注解的时候需要注意一些问题: 一个方法中只能有一个@RequestBody注解。 默认情况下@RequestBody标注的对象必须包含前台传来的所有字段。 第一条容易理解,因为RequestBody...
  • 在使用@RequestBody注解的时候需要注意一些问题: 1.一个方法中只能youy
  • OKHttp源码分析(二)之RequestBody

    千次阅读 2017-05-01 12:30:38
    具体参见:OKHttp源码分析(一)在post请求中用到的API很大部分与get请求中用到的API相同,最大的不同就是Request.Builder类的post方法,这个方法的作用是设置post请求的请求体,接收的参数是RequestBody类及子类...
  • ​ 接口项目本身约定数据都是json格式,使用@RequestBody接收 @RestController @RequestMapping("/app") @Transactional(rollbackFor=Exception.class) public class AppAction { @PostMapping("/login") ...
  • 加@RequestBody必须给json字符串,否则会报错400,记如标题错误。 不加这个的进行请求的话,其实post和get就没有什么区别了。 2. List&lt;String&gt; indexCodes=(List&lt;Stri...
  • 最近加入了JWT(json web token)为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。导致处理问题。 上传文件失败问题描述 加入jwt之后,上传文件需要添加header,进行token认证。导致现在上传后返回...
  • 今天学习SpringMVC过程中,遇到了用@RequestBody接收Json的问题,开始总是报415,后来翻墙找到了解决办法,本人用的Spring4Spring配置文件所必须最简配置: class="org.sprin
  • 昨天写程序,利用ajax向后台发送json对象请求的时候出现了415错误,网上的方法试了一大堆都不管用,后台我将springMVC的配置文件改成了前的,就可以了 springMVC更改之前 &amp;amp;amp;...
  • 最近测试低版本兼容性时发现的问题,使用NoHTTP第三方框架发送DELETE请求时出现的错误。...但HttpURLConnection在5.0以下的系统中DELETE请求方法不允许发送body。 解决方案: 更换NoHTTP网络层为OKHTTP。 如果要...
  • 在POST请求,可以使用@RequestBody和@RequestParam,但是如果使用@RequestBody,对于参数转化的配置必须统一。 举个例子,在SpringMVC配置了HttpMessageConverters处理栈中,指定json转化的格式,如Date转成‘yyyy-...
  • 左边的swagger上看起来是正常的,网络上很多人都是用这种@Requestbody方式,但是我们约定的是form-data,所以不能使用@Requestbody接收参数。而如果不用,那么swagger文档上看到的都是全部铺开的,不是很方便使用。...
  • 本博文分为两部分 1.... 以上两个示例仅仅算是恶作剧,恶意用户能做的更多,如获取用户信息,进行“网络钓鱼”攻击等。 应对XSS攻击的其中一个方式就是后端对输入内容进行过滤,输入内容里面的敏感信息直接过滤,如

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 112,918
精华内容 45,167
关键字:

网络requestbody