Retrofit学习与使用(二)-POST请求

使用JSON字符串实现POST

//@Body表示输入的参数为非表单请求体,JsonBean用于解析返回的响应题内的Json字符串
@POST("postTest")
    Call postTest(@Body RequestBody body);


Retrofit retrofit=new Retrofit.Builder()
                        .baseUrl("http://10.0.2.2:5000/")
                        .addConverterFactory(ScalarsConverterFactory.create())
                        .addConverterFactory(GsonConverterFactory.create())
                        .build();
                GetRequest_Interface request=retrofit.create(GetRequest_Interface.class);
                String json="{\n" +
                        "    \"cmd\":\"test\",\n" +
                        "    \"fund_key\":12345\n" +
                        "}";
                RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),json);
                Call repos=request.postTest(body);
                JsonBean productResult=repos.execute().body(); //响应体解析成对应的java类

我们首先尝试了最为常用的通过JSON发出POST请求。同时也可以看到retrofit在处理返回的JSON数据上非常的高效,简洁。

使用表单提交POST

    @POST("postTest")
    @FormUrlEncoded//表示提交表单数据,@Field注解键名
    Call postTest(@Field("cmd") String cmd,@Field("fund_key") int key);

    //对应请求的实现
    GetRequest_Interface request=retrofit.create(GetRequest_Interface.class);
                Call repos=request.postTest("want",1234);


/////////////////////////////////////////////////////////////////////////////

 //对应请求的实现
    @POST("postTest")
    @FormUrlEncoded//@FieldMap表示提交的表单数据
    Call postTest(@FieldMap HashMap map);

     Map maps=new HashMap<>();
                maps.put("cmd","want");
                maps.put("fund_key",11234);
                Call repos=request.postTest((HashMap) maps);
/////////////////////////////////////////////////////////////////////////////
@POST("postTest")
    @Multipart//支持文件上传的表单
    Call postTest(@Part("cmd")String cmd,@Part("fund_key",@Part MultipartBody.Part file) int key);

RequestBody file=RequestBody.create(MediaType.parse("application/octet-stream"),"这是一个文件");
                MultipartBody.Part part=MultipartBody.Part.createFormData("file","file.txt",file);
                Call repos=request.postTest("main",254,part);

你可能感兴趣的:(Retrofit学习与使用(二)-POST请求)