@Post使用Rest返回400 Bad Request

时间:2015-07-31 17:36:59

标签: android json rest http-post gson

我已经创建了一个应用程序,当用户提供有效的用户名和密码时,会将用户登录,并且我正在尝试使用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和密码是我在登录表单中输入的信息。

如果有人能帮助解决这个问题,我将非常感激。感谢

0 个答案:

没有答案