如何为Marvel Api请求发送timeStamp和md5哈希

时间:2019-04-06 13:24:11

标签: android kotlin retrofit md5

我正在尝试调用Marvel Api,但返回的代码是= 401未经授权,这是因为无法正确发送timeStamp和hash参数。

该网址的基础是http://gateway.marvel.com/v1/public/->我的网址是:= http://gateway.marvel.com/ v1 /公共/字符?名称=金刚狼和apikey = XXX和ts = 2019-04-06%2013:09:10.272&哈希= [B @ afad7ce8] 在文档中描述了我需要发送以下参数: 参数:{ “ apikey”:“您的api密钥”, “ ts”:“时间戳”, “ hash”:“您的哈希” } 我需要帮助才能正确生成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)
    }

1 个答案:

答案 0 :(得分:0)

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

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

转到网站https://passwordsgenerator.net/md5-hash-generator/ 将您的字符串设置为1564731162583abcd1234(时间戳+私钥+ api密钥,不带空格)。您将获得(带有示例中的参数)哈希:B5936DEBCC1A252C679D2D3E5361B6C0

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

希望它会有所帮助:)