Java E/Volley:[6074]基本网络。性能请求:的意外响应代码403 activity_main.xml
MainActivity.java 包com.example.android.hdnewsJava E/Volley:[6074]基本网络。性能请求:的意外响应代码403 activity_main.xml,java,android,api,android-volley,android-glide,Java,Android,Api,Android Volley,Android Glide,MainActivity.java 包com.example.android.hdnews public class HDNews { private String title; private String author; private String image; public HDNews(String title, String author, String image) { this.title = title; th
public class HDNews {
private String title;
private String author;
private String image;
public HDNews(String title, String author, String image) {
this.title = title;
this.author = author;
this.image = image;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public String getImage() {
return image;
}
}
导入androidx.appcompat.app.appcompat活动;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview
导入android.os.Bundle;
导入android.widget.LinearLayout
导入com.android.volley.NetworkResponse;
导入com.android.volley.Request;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.JsonObjectRequest;
导入com.android.volley.toolbox.volley
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.util.ArrayList
公共类MainActivity扩展了AppCompatActivity{
私人回收站
私人ArrayList al
专用HDNewsAdapter HDNewsAdapter
私有请求队列请求队列
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.rView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
al=new ArrayList<HDNews>();
requestQueue= Volley.newRequestQueue(this);
extractingDataFromInternet();
}
//http://newsapi.org/v2/top-headlines?country=in&apiKey=94bf8bcc374b494485309e325e3656f9
public void extractingDataFromInternet(){
String url="http://newsapi.org/v2/top-headlines?country=in&category=business&apiKey=94bf8bcc374b494485309e325e3656f9";
JsonObjectRequest JsonObjReq=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("articles");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject ca = jsonArray.getJSONObject(i);
String authorNames = ca.optString("author");
String titleNames = ca.optString("title");
String imageUrls = ca.getString("urlToImage");
al.add(new HDNews(titleNames, authorNames, imageUrls));
}
hdNewsAdapter = new HDNewsAdapter(MainActivity.this, al);
recyclerView.setAdapter(hdNewsAdapter);
} catch ( JSONException e ) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(JsonObjReq);
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.rView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
al=新的ArrayList();
requestQueue=Volley.newRequestQueue(this);
正在从Internet()提取数据;
}
//http://newsapi.org/v2/top-headlines?country=in&apiKey=94bf8bcc374b494485309e325e3656f9
public void从Internet提取数据(){
字符串url=”http://newsapi.org/v2/top-headlines?country=in&category=business&apiKey=94bf8bcc374b494485309e325e3656f9";
JsonObjectRequest JSONObjectReq=新的JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray JSONArray=response.getJSONArray(“文章”);
for(int i=0;i
}
public class HDNews {
private String title;
private String author;
private String image;
public HDNews(String title, String author, String image) {
this.title = title;
this.author = author;
this.image = image;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public String getImage() {
return image;
}
}
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView
导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview
导入com.bumptech.glide.glide
导入java.util.ArrayList
公共类HDNewsAdapter扩展了RecyclerView.Adapter{
私有上下文;
私人ArrayList al;
公共HDNewsAdapter(上下文,ArrayList al){
this.context=上下文;
this.al=al;
}
@非空
@凌驾
public HDNewsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
View views=LayoutInflater.from(parent.getContext()).flate(R.layout.activity_frame,parent,false);
返回新的视图持有者(视图);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int位置){
HDNews currentposition=al.get(位置);
字符串imgurl=currentposition.getImage();
字符串athName=currentposition.getAuthor();
字符串TTELNAME=currentposition.getTitle();
持有者.标题名称01.setText(名称);
holder.authorName01.setText(athName);
使用(context.load)(imgurl.into)滑动到(holder.imageurl01);
}
@凌驾
public int getItemCount(){
返回al.size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
公共文本视图authorName01;
公共文本视图标题名称01;
公共图像查看图像URL01;
公共视图持有者(@NonNull View itemView){
超级(项目视图);
authorName01=itemView.findviewbyd(R.id.textView1);
titleName01=itemView.findViewById(R.id.textView2);
imageurl01=itemView.findViewById(R.id.imageView);
}
@凌驾
公共void onClick(视图){
}
}
}
请在这个问题上帮助我403错误意味着您的服务器禁止您的请求。请确保您已获得授权,后端可以满足您的请求。我无法理解,请解释。请查看REST响应代码。当您尝试获取此资源时,您需要提供您的登录/密码或访问令牌。请帮助我我的帐户被阻止
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.rView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
al=new ArrayList<HDNews>();
requestQueue= Volley.newRequestQueue(this);
extractingDataFromInternet();
}
//http://newsapi.org/v2/top-headlines?country=in&apiKey=94bf8bcc374b494485309e325e3656f9
public void extractingDataFromInternet(){
String url="http://newsapi.org/v2/top-headlines?country=in&category=business&apiKey=94bf8bcc374b494485309e325e3656f9";
JsonObjectRequest JsonObjReq=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("articles");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject ca = jsonArray.getJSONObject(i);
String authorNames = ca.optString("author");
String titleNames = ca.optString("title");
String imageUrls = ca.getString("urlToImage");
al.add(new HDNews(titleNames, authorNames, imageUrls));
}
hdNewsAdapter = new HDNewsAdapter(MainActivity.this, al);
recyclerView.setAdapter(hdNewsAdapter);
} catch ( JSONException e ) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(JsonObjReq);
}
private Context context;
private ArrayList<HDNews> al;
public HDNewsAdapter(Context context, ArrayList<HDNews> al) {
this.context = context;
this.al = al;
}
@NonNull
@Override
public HDNewsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View views= LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_frame,parent,false);
return new ViewHolder(views);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
HDNews currentposition=al.get(position);
String imgurl=currentposition.getImage();
String athName=currentposition.getAuthor();
String ttleName=currentposition.getTitle();
holder.titleName01.setText(ttleName);
holder.authorName01.setText(athName);
Glide.with(context).load(imgurl).into(holder.imageurl01);
}
@Override
public int getItemCount() {
return al.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView authorName01;
public TextView titleName01;
public ImageView imageurl01;
public ViewHolder(@NonNull View itemView) {
super(itemView);
authorName01=itemView.findViewById(R.id.textView1);
titleName01=itemView.findViewById(R.id.textView2);
imageurl01=itemView.findViewById(R.id.imageView);
}
@Override
public void onClick(View view) {
}
}