Retrofit 处理 post请求 form-data
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Retrofit 处理 post请求 form-data相关的知识,希望对你有一定的参考价值。
参考技术A https://blog.csdn.net/jdsjlzx/article/details/52246114 //看一下这个博客我们知道 retrofit 是okhttp的wrapper(包装)
下面这样
一般普通的post请求就像上面这两种
但有接口明确 Content-Type: multipart/form-data
参考博客:
https://blog.csdn.net/Ash_Zheng/article/details/79262780
当然也可以试一下 (我还没有试过)
使用Retrofit发送POST请求提交JSON数据
Retrofit官网:https://square.github.io/retrofit/
示例如下
HttpService.java
import okhttp3.RequestBody; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.Headers; import retrofit2.http.POST; public interface HttpService { String BASE_URL = "http://47.99.62.153:7076/"; @Headers("Content-Type: application/json") @POST("xinyan/resultCallBack") Call<ResultCallbackReply> getResultCallback(@Body RequestBody body); }
Entry.java
import okhttp3.MediaType; import okhttp3.RequestBody; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; import java.util.logging.Level; import java.util.logging.Logger; public class Entry { private static final Logger LOGGER = Logger.getLogger(Entry.class.getName()); public static void main(String[] args) { HttpService service = new Retrofit.Builder().baseUrl(HttpService.BASE_URL).addConverterFactory(GsonConverterFactory.create()).build().create(HttpService.class); String body = "{\"token\": \"This is a token!\"}"; RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), body); service.getResultCallback(requestBody).enqueue(new Callback<ResultCallbackReply>() { @Override public void onResponse(Call<ResultCallbackReply> call, Response<ResultCallbackReply> response) { ResultCallbackReply reply = response.body(); LOGGER.log(Level.INFO, reply.getMsg()); } @Override public void onFailure(Call<ResultCallbackReply> call, Throwable t) { LOGGER.log(Level.SEVERE, null, t); } }); } }
build.gradle
dependencies { ... implementation ‘com.squareup.retrofit2:retrofit:2.5.0‘ implementation ‘com.squareup.retrofit2:converter-gson:2.5.0‘ }
使用@Headers("Content-Type: application/json")设置Content-Type为application/json
RequestBody指示了请求体,RequestBody.create(MediaType contentType, String content)创建RequestBody对象
以上是关于Retrofit 处理 post请求 form-data的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 @POST 请求使用 Retrofit 解析 JSON 响应和参数
retrofit2.0+RxJava结合使用时,怎么才能通过post请求返回一个response对象