在前两篇中 主要进行的数据加密,其中踩了不少的坑,在此标注出来 1.当请求中的参数有普通参数和上传文件的类型是 请求的注解是@Mutipart
@POST(Url)
@Multipart
Observable<Model> updateFile(@Query("id") String id , @Part List<MultipartBody.Part> files);
参数混合使用分别是@Query和@Part类型 @Query 是将参数直接拼接到url后面 @Part 会将参数添加到request的body中 这时Body类型为MultipartBody类型,参数存放在parts 中,key-value分别是Part在header和body中,结构如图
2.@Field 将参数添加到request的body中 这时Body类型为FormBody类型,其参数Key-Value对映的encodedNames(所有参数的key)-encodedValues(所有参数的value),结构如图 它和@Part不能同时使用 使用@Field和@POST同时使用,有参数时不要忘记@FormUrlEncoded,没有参数不要添加
3.使用@Part和@Query时 使用@Multipart,不能进行编码设置(其进行了各种编码设置,然而并没管用,哪位大神有解决的方法,希望可以告诉我一下,谢谢),默认编码是utf-8,会形成与浏览器访问url 类似的情况 如果参数中有汉字,那么会出现乱码现象,所以尽量请求中不要放中文,或者文件上传接口和其他接口分开来请求(取巧的方式,也算是一种解决方法吧,求更好的解决方式)