2 回答

TA贡献1877条经验 获得超6个赞
以5开头的 HTTP 状态代码通知错误在服务器端。代码500被解释为Internal Server Error,要解决这个问题,您必须检查可能导致它的原因。这可能是由代码中的错误引起的,在这种情况下,您可以打开 error_log 以查看错误并采取相应措施。
这可能是由于服务器功能暂时不可用(例如访问数据库)或同时打开的连接数超过相关 mysql 资源造成的。
有时,错误不会记录到 error_log 文件中。如果您使用 cpanel,请在主页上的Metrics选项卡下打开Errors并根据您向服务器请求的时间进行检查。如果您没有使用,请cpanel
查找相应的服务器日志。
通过在您的问题中传递的链接,错误代码不应该是,除非它在您的服务器端脚本中被覆盖或硬编码。
看这三个测试:
有了这个,我设置了时间和癌症参数,如您所见,错误代码是 500,但在响应正文中,状态 200 一切正常。
有了这个,即使我只设置一个参数,我仍然有答案。在响应正文中,有一个错误不是服务器错误,而是自定义错误:缺少参数。猜猜返回的 HTTP 代码是什么(500)
如果我删除所有参数怎么办?
一切正常。HTTP 状态代码和响应正文。这告诉我作者是否希望您收听自定义请求status
而不是返回的 HTTP 状态代码。这只是我的观点。

TA贡献1825条经验 获得超6个赞
我发现您正在使用的 API 上的一个错误是发送响应代码 500 + 响应数据。并且在 volley 中,只要检测到 200 到 299 以外的响应代码,就会在 volley 那里运行错误侦听器来处理它。这就是为什么您的代码错过了您的响应数据的原因,因为 Volley 错误侦听器首先获得了呼叫。
带有两个点的邮递员图片标记
坦率地说,这是 API 设计的非标准糟糕方式,它也会在响应上抛出状态代码。
我也想告诉你一些事情:
开始使用 Postman(如果你不使用它)
开始使用帮助程序库,这是我建议您使用的,它可以处理您的大多数方法调用,并通过自定义消息和单独的状态代码为您提供更好的错误处理。
希望这将帮助您应对未来的方法。
添加回答
举报