【问题标题】:Why does my URI return the correct JSON in my browser, but not in from my httpClient?为什么我的 URI 在我的浏览器中返回正确的 JSON,但不是从我的 httpClient 中返回?
【发布时间】:2014-11-09 13:04:25
【问题描述】:

我对 Django 和 RESTful API 比较陌生。

我正在编写一个 Android 应用程序,它对我的​​ API 执行 GET 请求,我使用 Django 和 Postgresql 设置了该请求。我正在使用 Ion 库异步执行此请求。我不认为 Ion 是个问题,因为当我尝试从 http://ip.jsontest.com/ 之类的示例 URI 获取时,此代码有效。我的代码如下所示。

    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 有何不同,后者在我的浏览器上返回相同的内容?也许我在某个地方存在概念上的不足。

【问题讨论】:

    标签: android json django httpclient ion


    【解决方案1】:

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

    【讨论】:

    • 该死,我是个白痴。谢谢。由于某种原因,当我在浏览器上尝试“bhive.herokuapp.com/api/questions”时,它会将其截断为bhive.herokuapp.com/api/questions,所以我没有想到要更改它。编辑 - 事实上,它在这里做,多么奇怪。我输入了http:,但是当我输入时它就消失了。
    • 是的,那是 Chrome 的东西。但是,如果您将其复制并粘贴到 URL 栏中,它似乎会重新添加 http(对我来说,无论如何)。
    猜你喜欢
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2015-09-13
    • 2010-11-07
    • 2010-10-16
    相关资源
    最近更新 更多