【发布时间】:2019-04-27 01:30:25
【问题描述】:
我遇到了一个奇怪的问题 .. 我正在开发应用程序,我的所有请求都可以正常工作,但最后三个没有任何理由! 我搜索了可能导致此问题的原因,但我什么都不明白……尽管该请求在 Postman 中运行良好!
这是我的请求函数:
@FormUrlEncoded
@POST("addContractBenefit")
Call<ResponseBody> addContractBenefit( @Header("Accept") String Accept,
@Header("Authorization") String token,
@Field ("contract_id") int contract_id ,
@Field ("contract_benefit") String contract_benefit
);
这是我的请求调用:
Call<ResponseBody> responseBodyCall = service.addContractBenefit("application/json","Bearer "+prefManager.getAPIToken() , contract_id , b.contractBenefit.getText().toString() );
responseBodyCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
mDialog.dismiss();
String jsonStr = null;
try {
jsonStr = response.body().string();
Log.d("response" , jsonStr);
} catch (IOException e) {
e.printStackTrace();
}
JSONObject json = null;
try {
json = new JSONObject(jsonStr);
JSONObject statesResponses = json.optJSONObject("states");
boolean success = statesResponses.getBoolean("success");
if(success){
Toast.makeText(getContext(), getString(R.string.added_successefuly), Toast.LENGTH_LONG).show();
benefitAdapter.notifyDataSetInvalidated();
b.contractBenefits.invalidateViews();
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.d("failure", t.getMessage());
mDialog.dismiss();
}});
和 RetrofitClientInstance
public static Retrofit getRetrofitInstance() {
if (retrofit == null) {
retrofit = new retrofit2.Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
我的所有其他请求都工作正常,但我不知道是什么导致这些请求出错!
【问题讨论】:
-
你遇到了什么错误?
-
response 为 null ,并且它不存储在服务器上
-
对我来说这是文件大小问题,请参阅stackoverflow.com/a/55913121/3904109
标签: android retrofit2 postman okhttp