Попытка отправить данные формы UrlEncoded в Post-запросе:
client.BaseAddress = new Uri("myURI");
var formContent = new MultipartFormDataContent();
formContent.Headers.ContentType.MediaType = "application/x-www-form-urlencoded";
formContent.Add(new StringContent("password"), "grant_type");
formContent.Add(new StringContent("someUser"), "username");
formContent.Add(new StringContent("somePassword"), "password");
HttpResponseMessage response = client.PostAsync("token", formContent).Result;
По некоторым причинам заголовки запроса содержат следующее:
somePassword
--7e556624-1d60-4321-a4ee-a85f6ab601c6
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=username
someUser
--7e556624-1d60-4321-a4ee-a85f6ab601c6
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=password
et c ...
Наверное, Guid - это граница. Однако, так как я использовал urlencode, это должно быть '?' border.
На самом деле, если я позвоню в мой сервис с помощью Postman, используя те же параметры и application/x-www-form-urlencoded
, тогда заголовки запроса будут содержать:
app_profile=freelancer&username=someUser&password=SomePassword&grant_type=password
Так как я могу добиться этого с помощью C#?
[EDIT]
Мне удалось заставить его работать так. Однако я хотел бы понять, что не так в исходном коде?
var values = new Dictionary<string, string>
{
{"username", "someUser"},
{"password", "somePassword"},
{"grant_type", "password"},
};
var formContent = new StringContent(JsonConvert.SerializeObject(values), Encoding.UTF8, "application/json");
HttpResponseMessage response = client.PostAsync("token", new FormUrlEncodedContent(values)).Result;