我想使用Retrofit庫,這樣我就可以從我的Android應用程序調用我創建的Django REST API。我有以下的代碼寫成:爲什麼我的改造入隊失敗?
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(這是從JSON生成POJO)
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;
}
}
現在,這是我的代碼實際上失敗: 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...");
}
});
我不知道爲什麼會出現這種情況。
以供參考,這是JSON文件看起來,當瀏覽到一個網頁瀏覽器在:
[{"username":"testuser","password":"pbkdf2_sha256$24000$9YMUYsV7WuIa$FnokGg8jFlAq3LHGBXgqVHNUnLCQa7pj5ehhWKvNkuU=","email":""}]
我的文字塊巨大道歉,但我不知道該怎麼解釋我問題。任何幫助將不勝感激。謝謝
如果您通過設備訪問鏈接,是否可以獲得相同的JSON響應? – nicobatu
是的,我是。我可以在瀏覽器中訪問example.com/json.json並獲得正確的結果 – ethanzh
您的JSON響應是否總是在數組內返回?我希望它是一個對象,JsonObject也是如此。 – nicobatu