Próbuję POST obiektu JSONObject przy użyciu biblioteki Retrofit, ale gdy widzę żądanie po stronie odbierającej, długość treści to 0
.CIAŁ POST JEST przy użyciu Retrofitu
W interfejsie RestService:
@Headers({
"Content-type: application/json"
})
@POST("/api/v1/user/controller")
void registerController(
@Body JSONObject registrationBundle,
@Header("x-company-device-token") String companyDeviceToken,
@Header("x-company-device-guid") String companyDeviceGuid,
Callback<JSONObject> cb);
I to jest wywoływana z,
mRestService.registerController(
registrationBundle,
mApplication.mSession.getCredentials().getDeviceToken(),
mApplication.mSession.getCredentials().getDeviceGuid(),
new Callback<JSONObject>() {
// ...
}
)
I jestem pewien, że registrationBundle
, który jest JSONObject
nie jest null lub puste (inne pola są z pewnością w porządku). W chwili złożenia wniosku wylogowuje się jako: {"zip":19312,"useAccountZip":false,"controllerName":"mine","registrationCode":"GLD94Q"}
.
Po stronie odbiorcy żądania widzę, że żądanie ma numer Content-type: application/json
, ale ma numer Content-length: 0
.
Czy istnieje powód, dla którego wysyłanie JSON w takim ciele nie działa? Czy brakuje mi czegoś prostego w użyciu Retrofitu?
Choć nie jest to odpowiedź, stwierdziliśmy, że najlepszym rozwiązaniem dla mnie było całkowicie zrezygnować z biblioteki modernizacji. Skończyło się na zastosowaniu androidasync loopj, który jest bardzo łatwy w użyciu dla wszystkich wywołań REST. Możesz publikować cokolwiek, niezależnie od typu treści i/lub, i jakiego typu wywołania zwrotnego potrzebujesz. Może to pomoże każdemu na to spojrzeć. – adityajones