为什么我的URI在浏览器中返回正确的JSON,而不是从我的httpClient中返回?

时间:2014-09-15 22:02:36

标签: android json django httpclient ion

我对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有什么不同,后者在浏览器中返回相同的内容?也许我在某处有一个概念性的缺陷。

1 个答案:

答案 0 :(得分:0)

您的URI缺少方案。请尝试使用http://bhive.herokuapp.com/api/questionshttp很重要。