0

Имею рабочий код с использованием Webclient'а

System.Net.WebClient wc = new System.Net.WebClient();
    wc.Headers["Cookie"] = (Encoding.UTF8.GetString(Convert.FromBase64String("")));
    string Cookie = (Encoding.UTF8.GetString(Convert.FromBase64String("")));
    string server = (Encoding.UTF8.GetString(Convert.FromBase64String("")));
    string useragent = (Encoding.UTF8.GetString(Convert.FromBase64String("")));
    string php = (Encoding.UTF8.GetString(Convert.FromBase64String("")));

    byte[] data = wc.DownloadData(server + php);

Он работает. Если смотреть запросы фидлера, то возвращает гет и пост запросы

Этот код

                HttpClient remote = new HttpClient();
        string useragent = ("Mozilla/6.0 (Windows NT 6.1; WOW64;Trident / 7.0; rv: 11.0) like Gecko");
        string server = ("http://192.168.31.129");
        string delimiter2 = (":");
        string cookie = ("");
        string php = ("");
        string port = ("");
        string delimiter = ("/");


        var BaseAddress = new Uri(server + delimiter2 + port);
        remote.DefaultRequestHeaders.Accept.Clear();

        try
        {
            remote.DefaultRequestHeaders.Add("User-Agent", useragent);
            var response1 = await remote.GetAsync(BaseAddress);
            var responseText = await response1.Content.ReadAsStringAsync();
        }
        catch { }

        var content = "text/html;charset=utf-8";
        var response = new HttpResponseMessage
        {
            Content = new StringContent(content)
        };
        response.Content.Headers.Add(@"Content-Length", content.Length.ToString());


        {
            using (var handler = new HttpClientHandler { UseCookies = false })
            using (var client = new HttpClient(handler) { BaseAddress = BaseAddress })

            {
                var message = new HttpRequestMessage(HttpMethod.Get, BaseAddress + php);
                message.Headers.Add("Cookie", cookie);
                var result = await client.SendAsync(message);
                result.EnsureSuccessStatusCode();
            }
        }


            byte[] data = await remote.GetByteArrayAsync(BaseAddress + php);

В дебаге выдает "Код состояния ответа не указывает на успешное выполнение: 404 (NOT FOUND)." Хотя передается юзерагент и сессия авторизации, но коннекта нет:( Ломаю голову уже неделю. Помогите разобраться, пожалуйста

  • вот пример https://ru.stackoverflow.com/q/1178026/373567, кучу лишней работы делаете, что я даже не смог понять, что должно в итоге получиться. Зачем-то 2 клиента, зачем-то куки в заголовки пихаете в то время как есть для них специальный контейнер. Зачем-то Content-Length прописываете, да еще и неверным значением. Длина контента - это в байтах кодировки UTF-8, а не в символах. Не надо ее прописывать, она автоматом пропишется правильная. При чем тут HttpResponseMessage вообще непонятно, вы это никак далее не используете. – aepot Dec 10 '22 at 16:47
  • С вариантом куки контейнера "Код состояния ответа не указывает на успешное выполнение: 405 (METHOD NOT ALLOWED)" – hasssker Dec 10 '22 at 18:00
  • Я вообще убрал куку с сервера и и юзер агент как требуемые при авторизации. Но ловлю 405 – hasssker Dec 10 '22 at 18:06
  • 405 обычно означает что там где можно только GET, вы отправили POST или наоборот. – aepot Dec 11 '22 at 02:14

0 Answers0