最近遇到了一个特别奇怪的接口,接口的传值只要传递一个String字符串,而非传统形式中的Map
尝试了很多方法都不行,困扰了我好久,写接口的人也早就离职了,公司里没人能帮我,最后我冥思苦想了一周后,终于解决了这个问题,先说结论:
结论:Retrofit中可以通过传入RequestBody的方式,自定义post中传递的值,这样不管是String类型,还是Map
下面是问题解决方法:
1.先编写api
@POST Calltext(@Url String url,@HeaderMap Map headermap,@Body RequestBody body);
2.编写网络请求数据
API api = RetrofitManager.getRetrofit().create(API.class);
Map
head.put("accept", "application/json");
String updata="这里是需要上传的String字符串";//需要上传的信息
String url="post请求需要的地址值";//URL地址值
RequestBody requestBody =RequestBody.create(MediaType.parse("application/x-www-form-urlencoded; charset=utf-8"), updata);
Call
textRetrofit.enqueue(new Callback
@Override
public void onResponse(Call
//成功
}
@Override
public void onFailure(Call
//失败
}
});
通过这种方式就可以把String作为Body的值传递给后台,问题解决~
ps:虽然这种传递方式一般后台都不会这么写,我们完全有权利要求后台去重新接口,但现实工作中总是会遇到各种奇奇怪怪的条件,让我们没办法按照预计的方式去解决。我们是程序员,遇到问题解决问题才是我们应该做的,后台固然可恨,但在解决问题的时候,我们的能力也会不知不觉地提高一些,这一点一滴的积累,慢慢地就会使我们蜕变,从一个初级程序员,向中级程序员迈进~