如何解决Volley StringRequest 结果为空错误
我最近想创建一个程序来定位和显示新闻来源。我所做的是使用一个名为 news api 的 api,我使用 android volley 模块执行字符串请求,但是当我尝试运行该应用程序时,它在我在 Response.ErrorListener() 中设置的 toast 上给了我一个空错误。我还验证了我的 api 密钥,没有任何问题。感谢所有未来的帮助。 代码如下:
MainActivity.java:
private void loadSources() {
sourcesLists = new ArrayList<>();
sourcesLists.clear();
progressBar.setVisibility(View.VISIBLE);
String url = "https://newsapi.org/v2/sources?apiKey=" + Constants.API_KEY;
StringRequest stringRequest = new StringRequest(Request.Method.GET,url,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("sources");
for (int i=0; i<jsonArray.length(); i++) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
String id = jsonObject1.getString("id");
String name = jsonObject1.getString("name");
String description = jsonObject1.getString("description");
String url = jsonObject1.getString("url");
String country = jsonObject1.getString("country");
String category = jsonObject1.getString("category");
String language = jsonObject1.getString("language");
SourcesListModel sourcesListModel = new SourcesListModel(
""+id,""+name,""+description,""+url,""+category,""+language,""+country
);
sourcesLists.add(sourcesListModel);
}
sourceslistadapter = new Sourceslistadapter(MainActivity.this,sourcesLists);
sourcesRecyclerView.setAdapter(sourceslistadapter);
}
catch (Exception e) {
progressBar.setVisibility(View.GONE);
Toast.makeText(MainActivity.this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressBar.setVisibility(View.GONE);
Toast.makeText(MainActivity.this,""+error.getMessage(),Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
My Adapter:
public class Sourceslistadapter extends RecyclerView.Adapter<Sourceslistadapter.sourcesListHolder> {
private Context context;
private ArrayList<SourcesListModel> sourcesLists;
public Sourceslistadapter(Context context,ArrayList<SourcesListModel> sourcesLists) {
this.context = context;
this.sourcesLists = sourcesLists;
}
@NonNull
@Override
public SourcesListHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.row_source_list,parent,false);
return new SourcesListHolder(view);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(@NonNull Sourceslistadapter.sourcesListHolder holder,int position) {
SourcesListModel model = sourcesLists.get(position);
String id = model.getId();
String name = model.getName();
String description = model.getDescription();
String country = model.getCountry();
String category = model.getCategory();
String language = model.getLanguage();
holder.nameTextView.setText(name);
holder.descriptionTextView.setText(description);
holder.countryTextView.setText(context.getString(R.string.country_text)+ country);
holder.categoryTextView.setText(context.getString(R.string.category_text)+ category);
holder.languageTextView.setText(context.getString(R.string.language_text)+ language);
holder.itemView.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
@Override
public int getItemCount() {
return sourcesLists.size();
}
class SourcesListHolder extends RecyclerView.ViewHolder{
TextView nameTextView,descriptionTextView,countryTextView,categoryTextView,languageTextView;
public SourcesListHolder(@NonNull View itemView) {
super(itemView);
nameTextView = itemView.findViewById(R.id.nameTextView);
descriptionTextView = itemView.findViewById(R.id.descriptionTextView);
countryTextView = itemView.findViewById(R.id.countryTextView);
categoryTextView = itemView.findViewById(R.id.categoryTextView);
languageTextView = itemView.findViewById(R.id.languageTextView);
}
}
}
My Model:
public class SourcesListModel {
String id,name,description,category,language,country;
public SourcesListModel(String id,String name,String description,String url,String category,String language,String country) {
this.id = id;
this.name = name;
this.description = description;
this.url = url;
this.category = category;
this.language = language;
this.country = country;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String id) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。