我尝试发布
public interface Service {
@FormUrlEncoded
@POST("/mobile/seeker/Search/JobsInCompany/{id}")
Call<retrofit_companyList.Contributor> JobBKK_POST (@Path("id") String IdCompany,
@Field("token") String token,
@Field("page") String page);
}
StartRetrofit(){
Retrofit_Build Build = new Retrofit_Build();
Service connect = Build.retrofit.create(Service.class);
Call<retrofit_companyList.Contributor> call = connect.POST(
IDCompany,
Token,
Integer.toString(Page)
);
call.enqueue(new Callback<retrofit_companyList.Contributor>() {
@Override
public void onResponse(Response<retrofit_companyList.Contributor> response, Retrofit retrofit) {...}
@Override
public void onFailure(Throwable t) {
Log.e(TAG, "Retrofit Fail : " + t.toString());
});
}
然后这是日志
D / OkHttp: - &gt; POST / mobile / sample / JobsInCompany / 50357 HTTP / 1.1
D / OkHttp:token = XXXXX&amp;页= 1
D / OkHttp: - &gt; END POST(45字节正文)
D / OkHttp: - &gt; POST / mobile / sample / JobsInCompany / HTTP / 1.1
D / OkHttp:token = XXXXX&amp;页= 1
D / OkHttp: - &gt; END POST(45字节正文)
D / OkHttp:&lt; - HTTP / 1.1 200 OK(171ms)
D / OkHttp:服务器:nginx
V / Fragment_choose_company:改造成功运行:总列表:11
V / Fragment_choose_company:Retrofit Success Runnable:RTC company,co 和https://XXX/images/503571.jpgV / Fragment_choose_company:改造成功Runnable:总清单:20
V / Fragment_choose_company:Retrofit Success Runnable:null和null
这个问题我只被召唤过一次。但改造发布了2次,数据响应为空
答案 0 :(得分:0)
TL; DR
是的,但是它会导致逻辑错误。
正如您在日志中看到的那样,改装发布了2次。但结果并不像您期望的那样
<强>原因:强>
1. HTML表单使用两种MIME类型:
应用程序/ x-WWW窗体-urlencoded
的multipart / form-data的
2.InIn Retrofit:
@Field :表示表单编码请求的命名对
@Part :表示多部分请求的单个部分
因此,Retrofit了解您要创建2个POST请求:表单编码和多部分。这解释了为什么你在日志中看到它发布了两次。
答案 1 :(得分:0)
@NguyenDat解释了为什么你不能使用它。我有同样的问题。我试过两个@Path。同样的问题。
解决了我的问题是:@Path和@Query组合。