初学者问,怎样通过url传递动态变化的参数

 我来答
EatingKun
2017-12-08 · TA获得超过5815个赞
知道大有可为答主
回答量:3185
采纳率:83%
帮助的人:876万
展开全部

其实我们用 POST 的场景相对较多,绝大多数的服务端接口都需要做加密、鉴权和校验,GET 显然不能很好的满足这个需求。使用 POST 提交表单的场景就更是刚需了,怎么做呢?

@FormUrlEncoded
@POST("/")
Call<ResponseBody> submit(
@Field("name") String name,
@Field("occupation") String occupation);12345

其实也很简单,我们只需要定义上面的接口就可以了,我们用 Field 声明了表单的项,这样提交表单就跟普通的函数调用一样简单直接了。

与Query一样,如果你有很多Field参数,不要怕,赶紧试试FieldMap吧。

Part & PartMap(POST请求) 
这个是用来上传文件的。有了 Retrofit,妈妈再也不用担心文件上传费劲了~~~

public interface FileUploadService {
@Multipart
@POST("upload")    
Call<ResponseBody> upload(@Part("description") RequestBody description,                              @Part MultipartBody.Part file);
}1234567

如果你需要上传文件,和我们前面的做法类似,定义一个接口方法,需要注意的是,这个方法不再有 @FormUrlEncoded 这个注解,而换成了 @Multipart,后面只需要在参数中增加 Part 就可以了。也许你会问,这里的 Part 和 Field 究竟有什么区别,其实从功能上讲,无非就是客户端向服务端发起请求携带参数的方式不同,并且前者可以携带的参数类型更加丰富,包括数据流。

也正是因为这一点,我们可以通过这种方式来上传文件,下面我们就给出这个接口的使用方法: 

在实验时,我上传了一个只包含一行文字的文件:

Visit me: http://www.println.net1

那么我们去服务端看下我们的请求是什么样的:

HEADERS 

FORM/POST PARAMETERS

description: This is a description

RAW BODY

Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式