【问题标题】:How do I use Http Digest Auth with volley on Android如何在 Android 上将 Http Digest Auth 与 volley 一起使用
【发布时间】:2016-03-07 06:58:09
【问题描述】:

我想将 Http DigestVolley 一起使用。到目前为止,我使用了以下代码:

@Override
public Map<String, String> getHeaders() throws AuthFailureError {

    HashMap<String, String> params = new HashMap<String, String>();
    String creds = String.format("%s:%s","admin","mypass");
    String auth = "Digest " + Base64.encodeToString(creds.getBytes(), Base64.NO_WRAP);
    params.put("Authorization", "Digest " +auth);
    return params;

}

到目前为止,我从服务器收到了错误凭据的响应,这意味着身份验证正在工作,但只有错误的凭据通过。但我的凭据是正确的。

【问题讨论】:

  • 听起来不错。不过,我没有看到任何问题。
  • 我没有得到任何结果。只有错误的凭据。我认为我传递凭据的方式是错误的。

标签: android android-volley http-authentication http-digest


【解决方案1】:

您使用 Base64 编码,这对于基本身份验证来说很好,但这不是摘要的工作方式。 可以在此处找到摘要和基本身份验证规范:https://www.rfc-editor.org/rfc/rfc2617

可在此处找到更新的摘要规范:https://www.rfc-editor.org/rfc/rfc7616

维基百科上有很好的额外解释:https://en.wikipedia.org/wiki/Digest_access_authentication

对于 Digest Auth 的 Volley 实现,您可以使用: http://www.java2s.com/Open-Source/Android_Free_Code/Framework/platform/com_gm_android_volleyHttpDigestStack_java.htm

您只需要在创建网络时传递此 http 堆栈,然后使用它来创建您的 RequestQueue:

    RequestQueue requestQueue;
    requestQueue = new RequestQueue(
            new DiskBasedCache(rootDir),
            new BasicNetwork(new HttpDigestStack())
    );
    requestQueue.start();

【讨论】:

  • 能否说的更具体些。
  • 条条大路通向这段代码,但没有一个关于如何实现它的正确答案!
  • @PassKit 回答已编辑 :) 我希望现在更清楚 :)
  • 这可能是一个愚蠢的问题,但是您究竟是如何从java2s.com/Open-Source/Android_Free_Code/Framework/platform/… 导入代码的呢?似乎没有任何文档说明如何将其添加到我正在苦苦挣扎的项目中。
  • 在您的项目中创建一个类,然后复制并粘贴该代码:)
猜你喜欢
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多