Я пытаюсь «переназначить» сторонний API, используемый настольным приложением. Я обнаружил, что приведенный ниже код позволяет мне очень близко сопоставить пакеты, отправленные приложением:
var formData = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>(JsonConvert.SerializeObject(myPayload), "")
});
var response = Client.PostAsync(myURL, formData).Result;
var json = response.Content.ReadAsStringAsync().Result;
Это дает мне почти точно такую же полезную нагрузку, отправленную приложением, за исключением того, что кодирует данные (язнаете, "закодировано" прямо в названии). Мне нужно получить точно такой же запрос, но без кодирования данных, но я не могу найти правильный объект (ы) для его выполнения. Как сохранить этот полезный груз от закодированного URL?
Редактировать:
Это запрос на вход в систему, полученный от Wireshark, исходящий из приложения:
POST /Login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: 1.1.1.1
Content-Length: 161
Expect: 100-continue
Connection: Close
{"username":"myuser","auth-id":"0a0a140f81a2ce0c303386e93cec41bf04660c22a881be9a"}
Эточто сгенерирует вышеприведенное:
POST /Login HTTP/1.1
Expect: 100-continue
Connection: Close
Content-Type: application/x-www-form-urlencoded
Content-Length: 221
Host: 1.1.1.1
%7B%22user-name%22%3A%22myuser%22%2C%22auth-id%22%3A%220a0a140f81a2ce0c303386e93cec41bf04660c22a881be9a%22%7D=
Я отредактировал их для краткости, поэтому Content-Length неверен. Я понимаю, что это может быть не лучший способ отправки этих данных, но я не могу контролировать, как они потребляются.