Android Retrofit 2.0关于请求头,请求体问题。
最近遇到一个关于请求头和请求体问题。服务器要求我们直接将参数拼在请求地址后面。按照Android Retrofit 2.0的写法,死活调不到服务器正常返回数据。
举例如下:
ProjectAPIService apiService = RetrofitUtils.retrofit.create(ProjectAPIService.class);
apiService.doLogin(Constants.ROOT_URL + Constants.GET_USER_LOGIN, map1).enqueue(new MyCallBack3<BaseCallModel3<ResultValueBean>>() {
@Override
public void onSuc(Response<BaseCallModel3<ResultValueBean>> response) {
if (response.isSuccessful() && response.raw().code() == 200) {
Constants.Cookie = response.headers().get("Set-Cookie");
服务器要求分别为,登录不带cookie,登录之后的联网操作都要带返回的cookie。
不带cookie开始使用第一种方式请求,后台一直报错。后查原因,Retrofit 2.0后拼的参数默认不是直接拼到URL后面,而是以body形式传到后台,发现后台接收不了。所以改为第二种。一定要提前确认后台需要的请求格式,很重要!!!
而第三种数据格式,是由于登录之后的请求都需要带cookie的所以必须带请求头里加参数。