我对Django和RESTful API相对较新。
我正在编写一个对我的API执行GET请求的Android应用程序,我已经使用Django和Postgresql进行了设置。我正在使用Ion库异步执行此请求。我不认为Ion是一个问题,因为当我尝试从http://ip.jsontest.com/等样本URI获取GET时,此代码可以正常工作。我的代码看起来像这样。
public class ConnectToBackend {
//Contains public static functions
public static void getAllQuestions(final Context mcontext){
Ion.with(mcontext)
.load("bhive.herokuapp.com/api/questions")
.asJsonObject()
.setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, JsonObject result) {
// this is called back onto the ui thread, no Activity.runOnUiThread or Handler.post necessary.
Log.d("ConnectToBackend", "getAllQuestions called");
if (e != null) {
Toast.makeText(mcontext, "Error loading questions " + e.toString(), Toast.LENGTH_LONG).show();
Log.d("ConnectToBackend", e.toString());
return;
}
else{
Log.d("connectToBackend", "Received JSON array for getAllQuestions");
Log.d("connectToBackend", "jsonObject is " + result.toString());
return;
}
}
});
return;
}}
如您所见,URI是bhive.herokuapp.com/api/questions。当我在浏览器中尝试此操作时,它会返回我期望的JSON字符串。但是,当我尝试使用此代码时,我希望使用相同的JSON字符串,但我得到了异常:
java.lang.Exception: Invalid URI
为什么我的浏览器会返回预期的JSON但是当我尝试这样的URI时,它不起作用?我的URI与http://ip.jsontest.com/之类的示例URI有什么不同,后者在浏览器中返回相同的内容?也许我在某处有一个概念性的缺陷。
答案 0 :(得分:0)
您的URI缺少方案。请尝试使用http://bhive.herokuapp.com/api/questions
。 http
很重要。