You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio开发News API项目Volley出现AuthFailureError如何解决

Volley调用News API抛出AuthFailureError解决方案

错误原因与对应修复方式

  • API密钥有效性问题
    你当前使用的apiKey大概率存在无效、过期、账号未激活、请求配额耗尽的情况。News API免费版有每日请求次数限制,超出限制后会直接返回身份验证错误。你可以先登录News API开发者后台,确认密钥状态、请求配额是否正常。
  • 请求头配置缺失
    News API部分接入场景要求将密钥放在请求头而非URL参数中传递,Volley默认不会携带自定义请求头,需要重写getHeaders方法添加Authorization字段。
  • 日期参数超出权限范围
    News API免费版仅支持查询最近30天内的新闻数据,你当前代码中写死的查询日期是2021-08-31,远超出免费版权限范围,也会触发权限类错误,需要将日期修改为最近30天内的区间。
  • 网络连通性问题
    如果当前网络存在防火墙拦截、代理限制,或是无法正常访问News API服务,也会触发该错误。你可以先在本地浏览器直接访问你的请求URL,确认是否能正常返回JSON数据,先解决网络连通性问题。

修改后的代码示例

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RequestQueue requestQueue;
        requestQueue = Volley.newRequestQueue(this);
        List<news_Objects> newsList = new ArrayList<>();
 
        // 修改为最近30天内的日期,替换为你自己的有效API密钥
        String url="https://newsapi.org/v2/everything?q=apple&from=2024-07-20&to=2024-08-19&sortBy=popularity";
        final String API_KEY = "替换为你的有效API密钥";

        // 构建JSON请求
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONArray jsonArr = response.getJSONArray("articles");
                    for (int i = 0; i < jsonArr.length(); i++) {
                        JSONObject newsDetail = jsonArr.getJSONObject(i);
                        news_Objects news = new news_Objects();
                        String imtUrl = newsDetail.getString("urlToImage");
                        String title = newsDetail.getString("title");
                        String detail = newsDetail.getString("description");
                        String newsUrl = newsDetail.getString("url");
                        String content = newsDetail.getString("content");

                        news.setNewsImageUrl(imtUrl);
                        news.setNewsTitle(title);
                        news.setNewsDetail(detail);
                        news.setNewsUrl(newsUrl);
                        news.setContent(content);
                        newsList.add(news);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("fine", "Something Wrong"+error);
                Toast.makeText(MainActivity.this, "Something Wrong "+error, Toast.LENGTH_SHORT).show();
                error.printStackTrace();
            }
        }){
            // 重写添加请求头
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<>();
                headers.put("Authorization", "Bearer " + API_KEY);
                headers.put("Content-Type", "application/json");
                return headers;
            }
        };
        requestQueue.add(request);
    }
}

内容的提问来源于stack exchange,提问作者1234 Abhishek Rajput

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:15:05