Android:如何从 Zomato API 获取 JSON 对象?
Android: How to get JSON object from Zomato API?
我的目标是使用 Zomato API 显示附近餐馆的列表。我首先需要 JSON 对象来获取这些餐馆的名称。
我已经得到了 API 密钥并且我知道请求 URL 看起来像这样
https://developers.zomato.com/api/v2.1/search?lat=LATITUDE&lon=LONGITUDE
根据文档 https://developers.zomato.com/documentation,我似乎必须使用一种叫做 Curl 的东西,但我不知道 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"
如有任何帮助,我们将不胜感激。
您可以使用 Rest Client 来调用带有 header 和 URL 的请求。
我建议使用 Volley or Retrofit 来做到这一点。
下面是一个使用 Volley 的例子:
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}
我注意到 Curl 包含 --header
,所以我对 URL 中的 headers 做了一些研究,并在 url.openConnection();
之后添加了这两行
URLConnection urlConnection = url.openConnection();
urlConnection.setRequestProperty("Accept", " application/json");
urlConnection.setRequestProperty("user-key", " "+API_KEY);
我得到了我需要的东西。
我的目标是使用 Zomato API 显示附近餐馆的列表。我首先需要 JSON 对象来获取这些餐馆的名称。 我已经得到了 API 密钥并且我知道请求 URL 看起来像这样
https://developers.zomato.com/api/v2.1/search?lat=LATITUDE&lon=LONGITUDE
根据文档 https://developers.zomato.com/documentation,我似乎必须使用一种叫做 Curl 的东西,但我不知道 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"
如有任何帮助,我们将不胜感激。
您可以使用 Rest Client 来调用带有 header 和 URL 的请求。 我建议使用 Volley or Retrofit 来做到这一点。 下面是一个使用 Volley 的例子:
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}
我注意到 Curl 包含 --header
,所以我对 URL 中的 headers 做了一些研究,并在 url.openConnection();
URLConnection urlConnection = url.openConnection();
urlConnection.setRequestProperty("Accept", " application/json");
urlConnection.setRequestProperty("user-key", " "+API_KEY);
我得到了我需要的东西。