Ich versuche, die Retrofit-Bibliothek zu verwenden, damit ich von meiner Android-App aus meine Django-REST-API aufrufen kann, die ich erstellt habe. Ich habe den folgenden Code geschrieben:Warum schlägt meine Retrofit Enqueue fehl?
UserAPI.java
public interface UserAPI {
String BASE_URL = "http://www.example.com";
@GET("/json.json")
Call<JsonObject> getUsers();
class Factory {
private static UserAPI service;
public static UserAPI getInstance(){
if(service == null){
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.build();
service = retrofit.create(UserAPI.class);
return service;
}
else{
return service;
}
}
}
}
JsonObject.java (dies von JSON Pojo generiert wurde)
public class JsonObject {
@SerializedName("username")
@Expose
private String username;
@SerializedName("password")
@Expose
private String password;
@SerializedName("email")
@Expose
private String email;
/**
*
* @return
* The username
*/
public String getUsername() {
return username;
}
/**
*
* @param username
* The username
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
* @return
* The password
*/
public String getPassword() {
return password;
}
/**
*
* @param password
* The password
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
* @return
* The email
*/
public String getEmail() {
return email;
}
/**
*
* @param email
* The email
*/
public void setEmail(String email) {
this.email = email;
}
}
Nun, das ist, wo meine Code schlägt tatsächlich fehl: MainActivity.java
UserAPI.Factory.getInstance().getUsers().enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
Log.wtf("Response", "" + response.body());
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
Log.wtf("FAIL", "This failed...");
}
});
Ich kann nicht für das Leben von mir denken, warum dies geschieht.
Als Referenz ist das, was die JSON-Datei auf einem Web-Browser an, wenn navigiert aussieht:
[{"username":"testuser","password":"pbkdf2_sha256$24000$9YMUYsV7WuIa$FnokGg8jFlAq3LHGBXgqVHNUnLCQa7pj5ehhWKvNkuU=","email":""}]
ich für den großen Textblock entschuldigen, aber ich wusste nicht, wie sonst meine zu erklären, Problem. Jede Hilfe wird sehr geschätzt. Danke
Können Sie die gleiche JSON-Antwort erhalten, wenn Sie den Link von Ihrem Gerät aus aufrufen? – nicobatu
Ja, ich bin. Ich kann zu Beispiel.com/json.json im Browser gehen und das korrekte Ergebnis erhalten – ethanzh
Geht Ihre JSON Antwort immer innerhalb eines Feldes zurück? Ich würde erwarten, dass es ein Objekt ist, genauso wie JsonObject. – nicobatu