JsonObjectRequest始终在android
中返回onErrorResponsepublic void clickFind(final View view) {
EditText find = (EditText) findViewById((R.id.editText));
// String
web = "http://api.tvmaze.com/search/shows?q=" + find.getText();
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, web, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("value");
lv = (ListView) findViewById(R.id.listView);
RowItem ri = null;
URL newurl = null;
for (int i = 0; i < jsonArray.length(); i++) {
try {
newurl = new URL(jsonArray.getJSONObject(i).getString("image"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
ri = new RowItem(newurl,jsonArray.getJSONObject(i).getString("name")
,jsonArray.getJSONObject(i).getString("summary"));
}
CustomListViewAdapter adapter = new CustomListViewAdapter(view.getContext(),R.layout.cf, ri);
lv.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Context context = view.getContext();
Toast.makeText(context, "error to upload "+web, Toast.LENGTH_SHORT).show();
}
});
queue.add(request);
} }
例如: http://api.tvmaze.com/search/shows?q=bob
这带来了回复,但是运行6个android手机总是出错 有没有人知道代码有什么问题?
答案 0 :(得分:0)
引用文档getJSONArray
返回按名称映射的值(如果存在)并且是JSONArray,或者 否则抛出。
并检查来自该api端点的响应&#34;值&#34;似乎不存在。我希望我没错,但我找不到任何名为&#34; value&#34;的财产。
答案 1 :(得分:0)
来自http://api.tvmaze.com/search/shows?q=bob的响应是JSON数组,而不是JSONObject。因此,您需要使用JsonArrayRequest
代替此JsonObjectRequest
-
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, web,new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
for(int i = 0; i < response.length(); i++){
JSONObject obj = response.getJSONObject(i);//This is your Json object which you can parse now.
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Context context = view.getContext();
Toast.makeText(context, "error to upload "+web, Toast.LENGTH_SHORT).show();
}
});
答案 2 :(得分:0)
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, web, null, new Response.Listener<JSONArray>() {
public void onResponse(JSONArray response) {
try {
whichList++;
lv = (ListView) findViewById(R.id.listView);
RowItem ri[] = new RowItem[response.length()];
for (int i = 0; i < response.length(); i++) {
JSONObject jsonArray = response.getJSONObject(i).getJSONObject("show");
ri[i] = new RowItem(jsonArray.getString("id"), "", "", jsonArray.getJSONObject("image").getString("medium"), jsonArray.getString("name")
, jsonArray.getString("summary"));
}
ArrayAdapterItem adapter = new ArrayAdapterItem(view.getContext(), R.layout.cf, ri);
lv.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Context context = view.getContext();
Toast.makeText(context, "error to upload " + web, Toast.LENGTH_SHORT).show();
}
});
queue.add(request);
}