#android #kotlin #retrofit #md5
#Android #kotlin #модернизация #md5
Вопрос:
Я пытаюсь выполнить вызов Marvel Api, однако получаемый мной результат — code = 401 Unauthorized, это связано с невозможностью правильной отправки параметров временной метки и хэша.
база URL-этоhttp://gateway.marvel.com/v1/public / -> мой URL-адрес: = http: //gateway.marvel.com / v1 / общедоступные / символы? имя = Росомаха amp; apikey = XXX amp; ts = 2019-04-06% 2013: 09: 10.272 amp; хэш = [B @ afad7ce8] В документации описано, что мне нужно отправить эти параметры: Params: { «apikey»: «ваш ключ api», «ts»: «временная метка», «hash»: «ваш хэш» } Мне нужна помощь, чтобы правильно сгенерировать ts и хэш. Примечание: хэш = 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:
Вы не должны помещать свой закрытый ключ в код (это плохая практика, и обычно с этим ключом вы можете выполнять операции CRUD с API и даже удалять некоторые части базы данных).
Получите свой открытый ключ Marvel (например, 1234), свой закрытый ключ (например, abcd) и выберите временную метку (например, 1564731162583).
Перейдите на веб-сайтhttps://passwordsgenerator.net/md5-hash-generator поместите свои строки, подобные 1564731162583abcd1234 (временная метка закрытый ключ ключ API без пробелов). Вы получите (с параметрами из примера) хэш: B5936DEBCC1A252C679D2D3E5361B6C0
Еще одна важная вещь: когда вы добавляете этот хэш в свой вызов API, временная метка должна быть такой же, как в хэше (ранее выбранный пример 1564731162583), а также хэш MD5 должен быть в нижнем регистре. Это важно.
Надеюсь, это поможет 🙂