无法使用Volley连接到API

时间:2019-07-18 10:00:57

标签: android header android-volley

我正在尝试使用凌空从API获取JSON请求,但它似乎不起作用。我确实尝试了另一种虚拟API,但该方法不起作用。我当前正在使用的具有带有键和值的标头。另外,在检查邮递员的API时,我看到JSON格式以“ [”开头,因此我不确定要为JSONObject放置什么。另外,我不确定是否已正确添加标题。我对android非常陌生,如果有人可以帮助我,我一定会很感激。

公共类MainActivity扩展了AppCompatActivity {

private RecyclerView mRecyclerView;
private ExampleAdapter mExampleAdapter;
private ArrayList<ExampleItem> mExampleList;
private RequestQueue mRequestQueue;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mRecyclerView = findViewById(R.id.recycler_view);
    mRecyclerView.setHasFixedSize(true);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

    mExampleList = new ArrayList<>();

    mRequestQueue = Volley.newRequestQueue(this);
    parseJSON();
}

private void parseJSON(){         字符串url =“ http://apidev.travelhouse.world/api/v1/packages”;

    JsonArrayRequest request = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            try {
                for (int i = 0; i < response.length(); i++) {
                    JSONObject hit = response.getJSONObject(i);

                    String creatorName = hit.getString("holiday_name");
                    String imageUrl = hit.getString("primary_image");
                    String likeCount = hit.getString("package_price");

                    mExampleList.add(new ExampleItem(imageUrl, creatorName, likeCount));
                }

                mExampleAdapter = new ExampleAdapter(MainActivity.this, mExampleList);
                mRecyclerView.setAdapter(mExampleAdapter);

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
            Toast.makeText(MainActivity.this, "Failed to connect", Toast.LENGTH_LONG).show();
        }
    }) {
        /** Passing some request headers* */
        @Override
        public Map getHeaders() throws AuthFailureError {
            HashMap headers = new HashMap();
            headers.put("Content-Type", "application/json");
            headers.put("X-API-KEY", "CODEX@123");
            return headers;
        }
    };

    mRequestQueue.add(request);
        }

1 个答案:

答案 0 :(得分:0)

将您的JsonObjectRequest替换为:

JsonArrayRequest request = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
    @Override
    public void onResponse(JSONArray jsonArray) { 
          for (int i = 0; i < jsonArray.length(); i++) {....}
    }
}