Как я могу отправить два HttpContent другого типа? (FormUrlEncodedContent (для тела) и StringContent (для дополнительных заголовков))
Я пытаюсь получить доступ к локальному серверу с помощью httpclient с POST (вход в систему)для соскоба HTML.
На этом сервере вам необходимо постоянно сохранять действительный файл cookie, в противном случае он будет считаться тайм-аутом, и вам придется начинать заново с экрана входа в систему.
Итаксначала нам нужно получить к нему доступ с помощью запроса GET, получить и сохранить файл Cookie, а затем выполнить запрос POST.
var parameter1 = new FormUrlEncodedContent(new Dictionary<string, string>{
{"param1","***" },
{"action","login" },
{"param2",null } //login form
);
var parameter2 = new StringContent("en-GB,en;q=0.9,ja;q=0.8", new UTF8Encoding(), "Accept-Language"); //got locale related error so setting accept-language
var parameter3 = new StringContent(cookie2b.ToArray()[0],new UTF8Encoding(), "Cookie") //cookies
//I know HttpContent is abstract so you can absolutely not do this, but hope this conveys my gist
HttpContent hc = parameter1 + parameter2 + parameter3;
var response = httpclient.PostAsync(url, hc).Result;
var responseContent = response.Content.ReadAsStringAsync();
Console.WriteLine(await responseContent);
using (FileStream fs = File.Create(@"~/random.html"))
{
AddText(fs, await responseContent);
}
[Ожидается] Войдите в систему, как ожидается, и получите html в указанном файле.
[Что происходит] Я понятия не имею, как, но получаю следующую ошибку на стороне сервера при попытке только с параметром 1: javax.servlet.jsp.JspException: В не удается установить локаль синтаксического анализа
* Сервер является внутренним, но не под моим контролем, плюс я прекрасно вижу страницу в своем браузере, поэтому я хочу исправить некоторые изменения в моем коде, а не на сервере.