在 Retrofit 和 @Body 注解中使用 PATCH 方法

Using PATCH Method In Retrofit and @Body Annotation

我的Url是

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);

在Activity

        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"
}

我创建了另一个 class 我从用户那里获取所有信息的地方是 geoTagUserData 我得到了所有的信息

请帮我找出错误。

最后我得到了解决方案,当我发送数据以从我的应用程序向服务器发送数据时,它只获取每个字段表单的值 geoTagUserData Class它没有 @post 已转换为 JSON 格式的数据。当我的服务器发现我的值不是 JSON 格式时 然后它就被拒绝了 Return 500 error

So, My solution is just Using Gson Converter get The value form user and Converted it to JSON object. and Send That to Server Which will Return 201