我正在我的Android项目中使用Retrofit库。我有一个rest服务器,试图请求它的登录方法。如果登录失败,服务器将返回401错误和json中的详细消息。我的问题是,在我的Nexus 5和Android 5.0上,它工作得很好,我可以从RetrofitError对象获取响应体。但在其他设备上,例如带有Android 4.2.2的Sony Xperia M,在同一请求中,我得到了未发现身份验证挑战
异常和RetrofitError。响应对象为空。有什么想法吗?
更新
这是我的代码。我也用Robospice库。
这是一个接口:
@POST("/auth")
User logIn(@Body UserSignUp userSignUp);
这是我的机器人间谍请求类
public class UserLoginRequest extends RetrofitSpiceRequest<User, Server> {
private UserSignUp userSignUp;
public UserLoginRequest(UserSignUp userSignUp) {
super(User.class, Server.class);
this.userSignUp = userSignUp;
}
@Override
public User loadDataFromNetwork() throws Exception {
return getService().logIn(userSignUp);
}
}
这是我的请求监听器:
public final class UserLoginListener implements RequestListener<User> {
@Override
public void onRequestFailure(SpiceException spiceException) {
if (spiceException.getCause() != null && ((RetrofitError) spiceException.getCause()).getBody() != null) {
Toast.makeText(LoginActivity.this, ((ResponseDto) (((RetrofitError) spiceException.getCause()).getBody())).error, Toast.LENGTH_LONG).show(); //On Nexus 5 with Android 5 this line works fine
} else {
Toast.makeText(LoginActivity.this, "Login failed", Toast.LENGTH_SHORT).show(); //On other devices I'm getting to this
}
}
@Override
public void onRequestSuccess(User user) {
//Some code here
}
}
User
是ResponseTo
class的子类ResponseTo
类只有一个名为error
的公共字符串字段。
似乎此异常与版本相关 - 这是由 HttpURL 连接引发的 IO 异常。尝试更改服务器的行为或在改造中处理 IOException。
未发现身份验证挑战
发生此错误是因为服务器发送了401(未经授权)但没有提供WWW-Authenticate标头,这是对客户端下一步操作的提示。
看看这里
我的后端是spring,前端是Angular。我无法访问授权标头。在postman中,如果我ping localhost:8080/login具有正确的数据,我就会获得成功授权,但是在我的应用程序中,当我尝试用httpclient localhost:8080/login发布具有正确的数据时,我会获得成功响应,但是头中没有标记,头是空的。
在SoapUI Pro中使用XmlParser的问题 您好,我正在尝试使用“xml解析器”在SoapUI Pro中验证我的xml响应。 我一直在一个groovy脚本中玩这个,如果我像这样在groovy脚本中声明和分配我的xml,我可以访问标签 如果我在脚本中声明xml,这会起作用。。 但是当我从我的Soap响应中实例化xmlParser变量时,它似乎在正在运行的测试实例中不起作用,如下所示。 我知
我的项目中有一个非常简单的SpringWebFlux restendpoint。 endpoint只需使用提供的用户名回复即可。 我面临的问题是响应体是空的,应该是用户名,我还验证了当我返回硬编码字符串时,它通过了,当我依赖
我在Bootstrap工作室工作,似乎无法修复这个愚蠢的问题。 我看到每个人都建议我将meta name=“viewport”content=“initial-scale=1.0,maximum-scale=1.0”添加到中,但不幸的是,我无法编辑这部分代码,因为它锁定在BootStrap studio中。 但我确实在我的代码中看到了这一点: 。.. 有没有什么方法可以在不导出的情况下删除Boot
我有一个用Java编写的Spring Boot应用程序,它是一个REST API。该服务(Svc A)调用REST API服务(Svc B),该服务也是用Java编写的Spring Boot应用程序。当没有找到数据时,Svc B返回404状态码。我需要将此响应更改为200状态代码,并返回一个空响应对象。我不确定是否或如何做到这一点。 我可以捕捉错误,并确定404是否是这个没有数据发现的错误。但是,
我的环境: Shop RestController:Spring Boot 在localhost laptopn ubuntu 18:04 在localhost desktop pc windows 10上 邮递员要求: Spring引导控制器: 我已经尝试使用Observable和any以及HttpHeaders和Application/JSON,但响应相同。