.NET 4.x POST запрос и Fiddler - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте ув. форумчани. Суть в том, что бы загрузить изображение в vk с помощью их api. Получилось и загрузить и запостить изображение. Но есть проблема. Проблема заключается в отправке POST запроса и получении ответа на этапе загрузки картинки на сервер.

При включенном Fiddler:

отправляется запрос и приходит ответ (см. рис. 1)

При выключенном Fiddler:

отправляется запрос но ответ приходит не полный (см. рис. 2). Есть предположения, что картинка не отправляется. Но это только предположения. В поиске решения данной проблемы нашел пару советов, но ни один не помог. тык бзды - тут описаны разного рода решений. Но не помогло. Код вызова метода POST:
result = POSTImage(url, @"pu.vk.com", @"at362396083.jpg", "image/jpeg", @"D:\Downloads\at362396083.jpg", true, true, @"*/*", null, cookie); //@"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
MessageBox.Show(result);
obj = Newtonsoft.Json.Linq.JObject.Parse(result);
photo = obj["photo"].ToString();
server = obj["server"].ToString();
hash = obj["hash"].ToString();
Код метода POST:
        public string POSTImage(string uri, string Host, string FileName, string TypeImage, string PathToImage, bool KeepAlive, bool AllowAutoRedirect, string Accept, string Referer, CookieContainer cookiecontainer)
        {
            string otv;
            Random rand = new Random();
            string _boundary = String.Format("--{0}", GetMD5(rand.Next(100, 999).ToString()));
            //MessageBox.Show(_boundary);
            string _contentType = String.Format("multipart/form-data; boundary={0}", _boundary);
            string _templateFile = String.Format("--{0}\r\nContent-Disposition: form-data; name="{1}"; filename="{2}"\r\nContent-Type: {3}\r\n\r\n", _boundary, "file", FileName, TypeImage);
            //MessageBox.Show(_templateFile);
            string _templateEnd = String.Format("--{0}--\r\n\r\n", _boundary);
            //MessageBox.Show(_templateEnd);
            byte[] _lineFeed = Encoding.UTF8.GetBytes("\r\n");
 
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.Method = "POST";
            request.Host = Host;
            //request.Timeout = 100000;
            //request.Headers.Add("X-Requested-With: XMLHttpRequest");
            byte[] sendData = File.ReadAllBytes(PathToImage);
            byte[] headsendData = Encoding.UTF8.GetBytes(_templateFile);
            byte[] endsendData = Encoding.UTF8.GetBytes(_templateEnd);
            request.ContentLength = sendData.Length + headsendData.Length + endsendData.Length + _lineFeed.Length;
            //MessageBox.Show(request.ContentLength.ToString());
            request.ContentType = _contentType;
            request.CookieContainer = cookiecontainer;
            request.KeepAlive = KeepAlive;
            request.AllowAutoRedirect = AllowAutoRedirect;
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36";
            request.Accept = Accept;
            request.Referer = Referer;
 
            Stream sendStream = request.GetRequestStream();
            sendStream.Write(headsendData, 0, headsendData.Length);
            //System.Threading.Thread.Sleep(1000);
            sendStream.Write(sendData, 0, sendData.Length);
            //System.Threading.Thread.Sleep(1000);
            sendStream.Write(_lineFeed, 0, _lineFeed.Length);
            //System.Threading.Thread.Sleep(1000);
            sendStream.Write(endsendData, 0, endsendData.Length);
            sendStream.Close();
 
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader streamr = new StreamReader(response.GetResponseStream());
            otv = streamr.ReadToEnd();
            streamr.Close();
            response.Close();
            return otv;
        }

P.S.

Знаю, что httpwebrequest и httpwebresposne устарели, но желания отказываться от них нет.

P.S.S.

Если необходимо больше кода, то готов предоставить. Супер секретного ничего нет. Но проблема происходит именно в данной части.

Решение задачи: «.NET 4.x POST запрос и Fiddler»

textual
Листинг программы
POSTImage(url, @"at362396083.jpg", "image/jpeg", @"D:\Downloads\at362396083.jpg");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5