2016-09-11 22 views
1

我的目标是使用Zomato API显示附近餐馆的列表。我首先需要JSON对象来获取这些餐馆的名称。 我已经得到了API密钥和我知道的请求的URL看起来像这样Android:如何从Zomato API获取JSON对象?

https://developers.zomato.com/api/v2.1/search?lat=LATITUDE&lon=LONGITUDE 

从文档https://developers.zomato.com/documentation,看来我不得不使用一些所谓卷曲,但我不知道Curl是什么。

curl -X GET --header "Accept: application/json" --header "user-key: API key" "https://developers.zomato.com/api/v2.1/search?&lat=LATITUDE&lon=LONGITUDE" 

任何帮助,将不胜感激。

回答

1

我注意到了Curl包含--header所以我做了关于网址的标题一些研究,并添加了这2线后url.openConnection();

URLConnection urlConnection = url.openConnection(); 
urlConnection.setRequestProperty("Accept", " application/json"); 
urlConnection.setRequestProperty("user-key", " "+API_KEY); 

而我得到了我所需要的。

2

您可以使用Rest Client通过标头和URL调用请求。 我建议使用VolleyRetrofit来做到这一点。 下面是使用凌空一个例子:

RequestQueue queue = Volley.newRequestQueue(this); 
     String url = "https://developers.zomato.com/api/v2.1/search?&lat=27&lon=153"; 
     JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.GET, url, null, 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         // response 
         Log.d("Response", response.toString()); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         // TODO Auto-generated method stub 
         Log.d("ERROR", "error => " + error.toString()); 
        } 
       } 
     ) { 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("user-key", "55a1d18014dd0c0dac534c02598a3368"); 
       params.put("Accept", "application/json"); 

       return params; 
      } 
     }; 
     queue.add(postRequest); 

而且我已经得到了响应:

{"restaurants":[],"results_found":0,"results_shown":0,"results_start":0}