首页 > 解决方案 > HTTP 请求不能与 Retrofit 一起使用,但在 Postman 中可以正常工作

问题描述

我面临一个奇怪的问题..我正在开发应用程序,我所有的请求都可以正常工作,但最后三个没有理由没有工作!我搜索了可能导致此问题的原因,但我什么都不明白……尽管该请求在 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;
    }

我所有其他请求都工作正常,但我不知道是什么导致这些请求出错!

标签: androidretrofit2postmanokhttp

解决方案


这是服务器错误,它需要另一个字符集/集合,这使它不能与改造一起使用,但可以在邮递员上使用


推荐阅读