【问题标题】:How To Send timeStamp and md5 hash for Marvel Api request如何为 Marvel Api 请求发送时间戳和 md5 哈希
【发布时间】:2019-04-06 13:24:11
【问题描述】:

我正在尝试调用 Marvel Api,但是我得到的返回是 code = 401 Unauthorized,这是由于无法正确发送 timeStamp 和 hash 参数。

网址基数是http://gateway.marvel.com/v1/public/ -> 我的网址是:= http://gateway.marvel.com/v1/public/characters?名称 = wolverine & apikey = XXX & ts = 2019-04-06% 2013: 09: 10.272 & hash = [B @ afad7ce8] 在文档中描述了我需要发送这些参数: 参数:{ "apikey": "你的 api 密钥", "ts": "一个时间戳", “哈希”:“你的哈希” } 我需要帮助才能正确生成 ts 和散列。 注:hash = ts + apiKey + publicKey

var ts = Timestamp(System.currentTimeMillis())
var hash = getHash(ts.toString())

fun getHash(ts: String): ByteArray? {
        val byte = ts.toByteArray() + API_KEY.toByteArray() + PUBLIC_KEY.toByteArray()
        val md = MessageDigest.getInstance("MD5")

        return md.digest(byte)
    }

【问题讨论】:

    标签: android kotlin retrofit md5


    【解决方案1】:

    您不应该将您的私钥放入代码中(这是不好的做法,通常使用此密钥您可以使用 API 进行 CRUD 操作,甚至删除数据库的某些部分)。

    获取您的 Marvel 公钥(例如 1234)、您的私钥(例如 abcd)并选择时间戳(例如 1564731162583)。

    访问网站https://passwordsgenerator.net/md5-hash-generator/ 把你的字符串像 1564731162583abcd1234 (时间戳+私钥+没有空格的api密钥)。您将获得(使用示例中的参数)哈希:B5936DEBCC1A252C679D2D3E5361B6C0

    更重要的一点:当您在 api 调用中添加此哈希时,时间戳必须与哈希中的时间戳相同(之前选择的示例 1564731162583)并且 MD5 哈希 必须是小写。这很重要。

    希望它会有所帮助:)

    【讨论】:

      猜你喜欢
      • 2019-04-20
      • 2013-10-05
      • 2020-02-19
      • 2019-03-11
      • 2015-08-06
      • 2012-01-21
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多