Я пытаюсь автоматизировать действия, которые можно выполнить вручную в приложении для iPhone с использованием Ruby, но когда я это делаю, я получаю ошибку 502 неверного шлюза.
Используя Charles Proxy, я получил запрос, который делает приложение для iPhone:
POST /1.1/user/-/friends/invitations HTTP/1.1
Host: redacted.com
Accept-Locale: en_US
Accept: */*
Authorization: Bearer REDACTED
Content-Encoding: gzip
Accept-Encoding: br, gzip, deflate
Accept-Language: en_US
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 66
Connection: keep-alive
X-App-Version: 814
invitedUserId=REDACTED&source=PROFILE_INVITATION
Я написал следующий код в Ruby, чтобы отправить этот же запрос:
@header_post = {
"Host" => "redacted.com",
"Accept-Locale" => "en_US",
"Accept" => "*/*",
"Authorization" => "Bearer REDACTED",
"Content-Encoding" => "gzip",
"Accept-Encoding" => "br, gzip, deflate",
"Accept-Language" => "en_US",
"Content-Type" => "application/x-www-form-urlencoded; charset=UTF-8",
"Connection" => "keep-alive",
"X-App-Version" => "814"
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
path = '/1.1/user/-/friends/invitations'
data = "invitedUserId=REDACTED&source=PROFILE_INVITATION"
resp, data = http.post(path, data, @header_post)
К сожалению, я получаю 502 Ошибка шлюза при запуске этого кода.
Одна вещь, которую я заметил, и которая, я думаю, является ключевой для решения, заключается в том, что в запросе POST, которое делает мобильное приложение, длина контента равна 66. Но длина строки "InviteUserId = REDACTED & source = PROFILE_INVITATION" с -идентифицированный userId всего 46.
Мне не хватает другой переменной формы с форматом "& param = value" длиной 20? Или я что-то упускаю?
Заранее спасибо!