在改造和@Body注释中使用PATCH方法

时间:2018-12-04 07:43:32

标签: android http retrofit2 okhttp3

我的网址是

  

http://sales.xxxxx.com/api/v2/customers/5101117835

当我使用此代码时,响应代码始终为500。

接口代码

@Headers({ "Content-Type: application/json;charset=UTF-8"})
@PATCH("customers/{custId}")
Call<GeoTag> postGeoTagData (@Body geoTagUserData geoTag, @Path("custId") String id, @Header("Authorization") String auth);

活动中

        Retrofit retrofit  = new Retrofit.Builder()
            .baseUrl(" http://sales.erprnd.com/api/v2/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    ApiInterface apiInterface = retrofit.create(ApiInterface.class);

   Call<GeoTag> geoTagCall =  apiInterface.postGeoTagData(geoTagUserData, CustCode, "Bearer "+body.getToken() );
   geoTagCall.enqueue(new Callback<GeoTag>() {
       @Override
       public void onResponse(Call<GeoTag> call, Response<GeoTag> response) {

           Toast.makeText(GeoTaggingActivity.this, ""+response.code(), Toast.LENGTH_SHORT).show();
       }

       @Override
       public void onFailure(Call<GeoTag> call, Throwable t) {
           Toast.makeText(GeoTaggingActivity.this, "Failed", Toast.LENGTH_SHORT).show();
       }
   });

当我使用Postman时,响应为201 AND Response IS {}没关系。我的jsonObject是

{
 "latitude":11.22,
 "longitude":22.11,
 "alt_address":"test address",
 "height":"12 ft",
 "width":"24 ft",
 "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAAD"
}

我创建了另一个类,我在其中获取用户的所有信息,这是 geoTagUserData 我可以完美地获取所有信息

请帮助我找到错误。

1 个答案:

答案 0 :(得分:0)

最后,我得到了解决方案,即当我从我的应用程序发送数据以将数据发送到服务器时,它只是针对每个字段窗体 geoTagUserData 获得值的值,而没有 在JsonFormet中发布转换后的数据。当我的服务器发现我只是不重视JsonFormet时 然后它被拒绝并返回500错误

  

所以,我的解决方案只是使用 Gson Converter 获取值表单   用户并将其转换为Json对象。并将其发送到服务器,该服务器将返回201