【问题标题】:How to make a GET Request using okhttp如何使用 okhttp 发出 GET 请求
【发布时间】:2016-02-06 06:24:25
【问题描述】:

我是 Android 开发新手,我想知道如何使用 okhttp 执行 GET 请求。我提到了http://square.github.io/okhttp/,但他们只有 POST 请求的示例。这个我试过了-

        okHttpClientLogin = new OkHttpClient();
        requestBodyLogin = new FormBody.Builder()
                .addEncoded("name", name_input) // params
                .addEncoded("keys", keys_input) //params
                .build();

        requestLogin = new Request.Builder()
                .addHeader("Authorization", token_type + " " +access_token)
                .url(LOGIN_URL)
                .get()
                .build();

得到一个错误:

{"status":{"status":206,"msg":"未找到记录"},"user":null}

我知道为什么会出现此错误,因为尚未输入参数。我也尝试在.get() 中传递requestBodyLogin,但不允许。

【问题讨论】:

  • "请给出这个问题的解决方案。"你可能不是这个意思,但这在英语中听起来很糟糕,就像老板和他的员工说话一样。您可能需要改写或删除该行。
  • 从错误看来,Get 调用正在工作,但是您的服务端点正在引发应用程序错误。添加详细信息,例如端点需要哪些参数。
  • 对于okhttp3,这里有一个解决方案:stackoverflow.com/a/43029045/1784529

标签: android-networking


【解决方案1】:

从 OkHTTP 2.4 开始,就有了函数addQueryParameter。您可以使用HttpUrlStringjava.net.URL 作为网址。 基本上,只需创建一个新的HttpUrl.Builder() 并使用函数addQueryParameter

取自 javadocs 的示例:

HttpUrl url = new HttpUrl.Builder()
       .scheme("https")
       .host("www.google.com")
       .addPathSegment("search")
       .addQueryParameter("q", "polar bears")
       .build();

http://square.github.io/okhttp/3.x/okhttp/okhttp3/HttpUrl.html

http://square.github.io/okhttp/2.x/okhttp/com/squareup/okhttp/HttpUrl.Builder.html#addQueryParameter-java.lang.String-java.lang.String-

【讨论】:

    猜你喜欢
    • 2014-06-20
    • 2021-09-03
    • 2017-06-09
    • 1970-01-01
    • 2011-06-18
    • 2018-06-30
    • 2017-06-17
    • 2018-08-25
    • 1970-01-01
    相关资源
    最近更新 更多