在 Retrofit 和 @Body 注解中使用 PATCH 方法
Using PATCH Method In Retrofit and @Body Annotation
我的Url是
当我使用此代码时,响应代码始终为 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
我的Url是
当我使用此代码时,响应代码始终为 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