Android 截击JsonObjectRequest错误响应
我有一个带有简单Json对象请求的类,这是调用整个请求的方法,在LogCat中我只得到:Android 截击JsonObjectRequest错误响应,android,android-volley,jsonresponse,Android,Android Volley,Jsonresponse,我有一个带有简单Json对象请求的类,这是调用整个请求的方法,在LogCat中我只得到: Volley: [2] 2.onErrorResponse: Error: 所以我不知道去哪里找解决办法 private void getBeerDetails() { JsonObjectRequest jsonObjectRequest = new JsonObjectRequest (Request.Method.GET, "h
Volley: [2] 2.onErrorResponse: Error:
所以我不知道去哪里找解决办法
private void getBeerDetails() {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
(Request.Method.GET,
"https://api.punkapi.com/v2/beers/13",
null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
beerName.setText(response.getString("name"));
alc.setText(response.getString("abv"));
ibu.setText(response.getString("ibu"));
firstBrewed.setText(response.getString("first_brewed"));
yeast.setText(response.getString("yeast"));
description.setText(response.getString("description"));
foodPairing.setText(response.getString("food_pairing"));
Picasso.with(getApplicationContext())
.load(response.getString("image_url"))
.into(beerImageView);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Error:", error.getMessage());
}
});
requestQueue.add(jsonObjectRequest);
}
private void getBeerDetails(){
JsonObjectRequest JsonObjectRequest=新JsonObjectRequest
(Request.Method.GET,
"https://api.punkapi.com/v2/beers/13",
null,新响应。侦听器(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
beerName.setText(response.getString(“name”));
alc.setText(response.getString(“abv”));
setText(response.getString(“ibu”);
firstbreed.setText(response.getString(“first_breed”);
酵母.setText(response.getString(“酵母”));
description.setText(response.getString(“description”);
foodPairing.setText(response.getString(“食物配对”);
Picasso.with(getApplicationContext())
.load(response.getString(“image\u url”))
.进入(beerImageView);
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(“错误:,Error.getMessage());
}
});
add(jsonObjectRequest);
}
您的错误消息描述性不强。但是,我认为您需要在GET请求的标题中将内容类型设置为application/json
。创建请求时重写getHeaders
函数。下面是一个java示例
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, jsonBody,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("TAG", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/json");
return params;
}
};
您的错误消息描述性不强。但是,我认为您需要在GET请求的标题中将内容类型设置为application/json
。创建请求时重写getHeaders
函数。下面是一个java示例
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, jsonBody,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("TAG", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/json");
return params;
}
};
正如我在这里看到的,您的响应是JsonArray格式的。
因此,请尝试使用下面的
private void getBeerDetails() {
JsonArrayRequest jsonObjectRequest = new JsonArrayRequest
(Request.Method.GET,
"https://api.punkapi.com/v2/beers/13",
null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
if(response.length()>0){
//make a loop and add item to your list
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Error:", error.getMessage());
}
});
requestQueue.add(jsonObjectRequest);
}
private void getBeerDetails(){
JsonArrayRequest jsonObjectRequest=新的JsonArrayRequest
(Request.Method.GET,
"https://api.punkapi.com/v2/beers/13",
null,新响应。侦听器(){
@凌驾
公共void onResponse(JSONArray响应){
if(response.length()>0){
//做一个循环并将项目添加到列表中
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(“错误:,Error.getMessage());
}
});
add(jsonObjectRequest);
}
正如我在这里看到的,您的响应是JsonArray格式的。
因此,请尝试使用下面的
private void getBeerDetails() {
JsonArrayRequest jsonObjectRequest = new JsonArrayRequest
(Request.Method.GET,
"https://api.punkapi.com/v2/beers/13",
null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
if(response.length()>0){
//make a loop and add item to your list
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Error:", error.getMessage());
}
});
requestQueue.add(jsonObjectRequest);
}
private void getBeerDetails(){
JsonArrayRequest jsonObjectRequest=新的JsonArrayRequest
(Request.Method.GET,
"https://api.punkapi.com/v2/beers/13",
null,新响应。侦听器(){
@凌驾
公共void onResponse(JSONArray响应){
if(response.length()>0){
//做一个循环并将项目添加到列表中
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(“错误:,Error.getMessage());
}
});
add(jsonObjectRequest);
}
show your complete log cat.show your complete log cat.好的,通过这段代码得到的错误消息,我可以看到我试图解析只有一个对象且没有名字的子数组(这是我第一次解析json请求)。我以为它是对象,但如何解析它呢?我明白,我肯定会深入研究这个Gson,谢谢,好吧,通过这段代码我得到的错误消息,我可以看到我试图用一个对象解析son数组,我猜没有名字(这是我第一次解析json请求)。我认为它是对象,但如何解析它呢?我理解,我肯定会深入研究Gson,谢谢,是的,响应是一个数组,但这是一个单个项目的值数组,没有列表,它是啤酒名称、描述、图像url等等。这是一个显示所有数据的单个活动OK,它可以工作,但是必须用数组加载单个对象数据非常不直观,但是感谢您的帮助是的,响应是一个数组,但这是一个单个项目的值数组,没有列表,它是啤酒名称、描述、图像url等等。这是一个显示所有数据的活动OK,它可以工作,但是必须用数组加载单个对象数据是非常不直观的,但是感谢您的帮助