我已经创建了一个应用程序,当用户提供有效的用户名和密码时,会将用户登录,并且我正在尝试使用api来运行应用程序。
出于某种原因,当我尝试发布URL时,我收到400 Bad Request错误。我相信这是因为我的参数没有正确附加到我的请求中。
这是我的Rest Post:
@Rest(converters = {GsonHttpMessageConverter.class})
@Accept(MediaType.APPLICATION_JSON)
public interface UserApi {
void setRootUrl(String rootUrl);
@Post("/xxx/xxx/{name}/{password}")
public LoginResponse login(String name, String password);
}
这是我的LoginResponse:
@Data
public class LoginResponse {
private String result;
private String api_key;
}
当我点击按钮,用户名和密码被发送到登录时,我开始拨打所有电话。然后创建此LoginResponse对象:
public void login(String userName, String password, Handler<LoginResponse> handler) {
try {
String newapi = "http://xxxxxxxxx.com/";
userApi.setRootUrl(newapi);
LoginResponse response = userApi.login(userName, password);
execute(handler, response);
} catch (Exception e) {
if (e instanceof SocketTimeoutException) {
Log.d(TAG, e.getMessage());
}
}
}
我不确定我做错了什么。我可以在我的REST Post Build文件中看到用户名和密码参数被放入请求中。请参阅以下代码:
public LoginResponse login(String name, String password) {
HashMap urlVariables = new HashMap();
urlVariables.put("name", name);
urlVariables.put("password", password);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAccept(Collections.singletonList(MediaType.parseMediaType("application/json")));
HttpEntity requestEntity = new HttpEntity(httpHeaders);
return (LoginResponse)this.restTemplate.exchange(this.rootUrl.concat("xxx/xxx/{name}/{password}"), HttpMethod.POST, requestEntity, LoginResponse.class, urlVariables).getBody();
}
当我调用网址时:它采用http://xxxxxxx.com/xxx/xxx/john/password
形式。 john和密码是我在登录表单中输入的信息。
如果有人能帮助解决这个问题,我将非常感激。感谢