0

谁能指出我正确的方向或演示如何在没有 Unirest 的情况下使用 API 密钥向 Mashape 发出请求?

我希望简单地使用 HttpURLConnection 类或 Android REST 库(如 OkHttp 或 Volley)向 Mashape API 发出 JSON 请求,但我不知道如何构造请求,或者如果不使用 Mashape 的 Unirest 库甚至可能。

这是他们建议创建 Unirest 请求的方式:

HttpResponse<JsonNode> response = Unirest.get("https://wordsapiv1.p.mashape.com/words/incredible/definitions")
  .header("X-Mashape-Key", "**********apikey************")
  .header("Accept", "application/json")
  .asJson();

我试图避免使用 Unirest,因为设置起来似乎很痛苦,而且因为伟大的 CommonsWare 自己表示应该避免使用 Android 的 Unirest: 有没有人有一个通过 gradle 导入 Unirest 的 android studio 项目的示例?

在这个问题中,我实际上是在尝试使用与初学者相同的 api 和相同的情况: Trying to fetch JSON with Android using Unirest

4

1 回答 1

0

我相信,我的答案就是你要找的。

我使用了 Volley 库,您需要添加一个依赖项:compile 'com.android.volley:volley:1.0.0'

RequestQueue requestQueue = Volley.newRequestQueue(this);
String uri = Uri.parse("https://wordsapiv1.p.mashape.com/words/incredible/definitions")
    .buildUpon()
    .build().toString();

StringRequest stringRequest = new StringRequest(
    Request.Method.GET, uri, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d("MainActivity", "response: " + response);
        }

    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("VolleyError", error.toString());
        }

    }) {

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String>  params = new HashMap<>();
            params.put("X-Mashape-Key", "<API_KEY>");
            params.put("Accept", "text/plain");
            return params;
        }
    };
    requestQueue.add(stringRequest);
于 2016-12-15T08:14:50.500 回答