【问题标题】:How to send Token with POST request to Django REST api from Android App?如何从 Android App 向 Django REST api 发送带有 POST 请求的令牌?
【发布时间】:2015-08-18 05:29:34
【问题描述】:

我正在使用 Django REST 框架 TokenAuthentication。当我发送用户名和密码时,我能够从 api 接收令牌。但是如何将这个令牌从 android 应用程序的每个请求发送到服务器?

【问题讨论】:

    标签: android django django-rest-framework


    【解决方案1】:

    您可以将令牌保存在您的共享首选项中,以便您可以在应用程序中的任何位置访问它:因此您不必每次都带着意图给予它

    最终 SharedPreferences 首选项 = this.getSharedPreferences( "包名", Context.MODE_PRIVATE);

    你可以把Token放在里面

    prefs.edit().putString("Token",tokenvalue).apply();

    并通过

    检索它

    prefs.getString("Token","DEFAULT VALUE");

    您可以通过将令牌放入标头中来发送您的请求:

    HttpPost httpPost = new HttpPost(); httpPost.setHeader("authorization",prefs.getString("Token","DEFAULT VALUE");

    【讨论】:

    • 您的回答很有用。一切都很好,但问题是 HttpPost 已被弃用
    • URLConnection 替换了所有的 apache 类 HttpClient 等
    • 能否提供 URLConnection 上下文中的代码?
    • coderanch.com/t/362398/Servlets/java/… 我认为这样可以解决问题
    • 你能告诉我如何在 AsyncHttpClient(loopj) 中添加标头吗?
    【解决方案2】:

    您需要在随请求发送的标头中包含令牌,其中随机字符串是您的令牌:

    Authorization: Token 1af538baa9045a84c0e889f672baf83ff24
    

    【讨论】:

    • 如果我向客户提出请求,我可以使用它。我使用 requestmaker.com 对此进行了测试。但是在android中你能告诉我如何设置标题吗?
    • apache 库及其功能已从 api 22 弃用
    • 我们有替代方案吗? loopj 的 AsyncHttpClient 可用,但我不知道如何在其中添加标题...你能帮帮我吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    相关资源
    最近更新 更多