Meine Frage ist so ähnlich wie Retrofit 2.0 beta 4 response get IllegalArgumentException, aber ihre Antwort hat mir nicht geholfen.java.lang.IllegalArgumentException: 'retrofit2.Response' ist kein gültiger Antworttexttyp. Meintest du ResponseBody?
Ich migriere von Retrofit 1.9 zu 2.0.2. Ich registriere meine App für Messaging nach dem Start.
/**
* Synchronous method to register GCM Token on Backend Server
*
* @return true, in case of success response, false otherwise.
*/
public boolean registerGCMToken()
{
...
try
{
Call<Response> call = mService.registerGCMToken(sessionId, this.ADDITIONAL_QUERY);
final Response response = call.execute().body(); // <<< Error points here
final DefaultResponse defaultResponse = DefaultResponse.newInstance(response);
return defaultResponse.isSuccess();
}
catch (IOException ignored)
{
}
return false;
}
Meine Schnittstelle wie folgt aussieht:
@GET("my/url")
Call<Response> registerGCMToken(@Header(Constant.HEADER_WILDCARD) String accessToken,
@QueryMap Map<String, String> additionalQuery);
Sobald ich starten Sie die App ich diesen Fehler:
java.lang.IllegalArgumentException: 'retrofit2.Response' is not a valid response body type. Did you mean ResponseBody?
und verweist auf die Linie, die ich oben erwähnt.
Meine newInstance Methode wie folgt aussieht:
public static final DefaultResponse newInstance(final Response response)
{
final DefaultResponse defaultResponse = new DefaultResponse();
if (response != null)
{
defaultResponse.status = response.code();
}
return defaultResponse;
}
So wie Sie sehen, muss ich wissen, was der Code HTTP-Status ist. Durch die Änderung Response
generische zu ResponseBody
Ich bin nicht in der Lage, http Statuscode zu bekommen. Also, Was ist deine Empfehlung? Dank
Dank Sharad habe ich das tatsächlich getestet und das Problem ist, dass ich HTTP-Statuscode von ResponseBody nicht bekommen kann. Allerdings, wenn ich die API aufrufen, hat seine Schnittstelle eine Methode, öffentliche void onResponse (Anruf Anruf, Antwort Antwort) {...}, dass ich in der Lage bin, Statuscode von "Antwort" zu bekommen. Das verwirrt mich, wie kann ich die Antwort auf synchrone Weise bekommen. –
Hesam
@Hesam Ich habe nicht viel Ahnung davon, und natürlich nicht mehr als du. Sie können es für synchrone Weise prüfen: http://stackoverflow.com/questions/36425488/how-to-get-http-response-status-in-synchronous-retrofit-2 und dies für HTTP-Code: http: // stackoverflow.com/questions/33774940/get-response-status-code-using-retrofit-2-0-and-rxjava –
Dank bro, auf asynchrone Weise habe ich kein Problem, um es als Response-Klasse funktioniert gut, das gleiche wie Ihre Dokumente – Hesam