【发布时间】:2018-04-17 03:22:24
【问题描述】:
我正在尝试使用 Post 方法,当有人发布正确的用户名和密码时,该方法返回一个令牌进行身份验证,但每次我收到 400 错误(我正在尝试使用 RetroFit for Android)
这是我的网址(我正在使用令牌认证):
from rest_framework.authtoken import views as tmp
from decaught import views
router = routers.DefaultRouter()
router.register(r'devices', views.DeviceViewSet)
router.register(r'users', views.UserViewSet)
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include(router.urls)),
url(r'^api-auth/', tmp.obtain_auth_token),
]
这是我使用改造的方式:
POST方法:
@POST("/api-auth/")
Call<Tokken> get_tokken(@Query("username") String username, @Query("password") String password);
登录方式:
private void signIn() {
boolean isValid = validate();
if (isValid) {
mService.get_tokken(user.getText().toString(), password.getText().toString()).enqueue(new Callback<Tokken>() {
@Override
public void onResponse(Call<Tokken> call, Response<Tokken> response) {
if (response.isSuccessful()) {
System.out.println("Te lo imprimo");
System.out.println(response.body().toString());
Toast.makeText(LoginActivity.this, "tokken recibido", Toast.LENGTH_SHORT).show();
} else {
int statusCode = response.code();
// handle request errors depending on status code
}
}
@Override
public void onFailure(Call<Tokken> call, Throwable t) {
Toast.makeText(LoginActivity.this, "Error al recibir tokken", Toast.LENGTH_SHORT).show();
t.printStackTrace();
Log.d("MainActivity", "error loading from API");
}
});
/*startActivity(new Intent(this, RolSelection.class));*/
}
}
但每次我尝试登录服务器时都会收到以下消息:
[2018 年 4 月 16 日 20:56:06]“POST /api-auth/?username=admin&password=admin1234HTTP/1.1”400 79
知道为什么会这样吗?
【问题讨论】: