Comment obtenir de la chaîne de réponse de Retrofit2?
Je suis en train de faire android, vous cherchez un moyen de faire un super basic http GET/POST demande. Je reçois un message d'erreur:
java.lang.IllegalArgumentException: Unable to create converter for class java.lang.String
Webservice:
public interface WebService {
@GET("/projects")
Call<String> jquery();
}
ensuite dans mon java:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://jquery.org")
//.addConverterFactory(GsonConverterFactory.create())
.build();
WebService service = retrofit.create(WebService.class);
Call<String> signin = service.jquery();
Toast.makeText(this, signin.toString(), Toast.LENGTH_LONG).show();
Je suis littéralement juste essayer de requête jquery.org/projects avec une requête GET et le retour de la Chaîne de qui il répond avec. Quel est le problème?
Si j'essaie de mettre en œuvre un Convertisseur personnalisé (j'ai trouvé quelques exemples en ligne), il se plaint que je n'ai pas implémenté la méthode abstraite convertir(F), qui aucun de ces exemples ne.
Grâce.
Vous devez vous connecter pour publier un commentaire.
Avec Retrofit2 ajouter ScalarsConverterFactory pour votre Rénovation.Builder.
À utiliser ScalarsCoverter ajouter la suite de dépendance de votre construction graddle
Pour les Appels de l'API d'utilisation: `
Android Code :
Je prends un coup d'oeil à la Rénovation de la bibliothèque et a remarqué qu'il analyse la réponse selon le type de classe à l'intérieur de
Call<T>
. Donc, vous avez deux options:1er: créer une classe en fonction de la réponse du serveur.
2ème: obtenir la réponse et de gérer vous-même (Pas recommandé de Rénovation déjà qu'il gère. Alors, pourquoi utilisez-vous de Rénovation comme il est fait sur mesure pour ce travail). De toute façon au lieu de
Call<String>
utilisationCall<ResponseBody>
etCall<ResponseBody> signin = service.jquery();
après cela, placez la ligne suivantePour obtenir la réponse comme une Chaîne de caractères, vous devez écrire une convertisseur et de le transmettre lors de l'initialisation de
Retrofit
.Voici les étapes à suivre.
Initialisation de rénovation.
Classe de convertisseur pour convertir
Retrofit's ResponseBody
àString
Et après l'exécution de
service.jquery();
,signin
contiendra réponse JSON.Vous pouvez essayer ce qui suit:
construire.gradle fichier:
WebAPIService:
Fichier d'activité:
J'ai testé avec mon Web service (ASP.Net WebAPI):
Android Logcat out:
04-11 15:17:05.316 23097-23097/com.example.multipartretrofit I/AsyncRetrofit2: value1
Espère que cela aide!
pensé qu'il pourrait être en retard pour répondre simplement utiliser
response.body()?.string()
et vous aurez votre réponse comme une chaîne de caractères.assurez-vous que le
JsonObject
pas unJSONObject
En utilisant
JsonObject
vous pouvez obtenir n'importe quel type d'intervention dans la chaîne de format.si vous avez trouvé
puis mettez ceci dans votre RestAdapter
par Exemple:
Suffit d'utiliser le niveau de journal
BODY
dans intercepror:Et vous pouvez voir le corps dans le logcat comme:
Cette solution pour debug uniquement, pas pour obtenir de Chaîne directement dans le code.