.NET 4.x POST запрос и Fiddler - C#
Формулировка задачи:
Здравствуйте ув. форумчани.
Суть в том, что бы загрузить изображение в vk с помощью их api. Получилось и загрузить и запостить изображение. Но есть проблема.
Проблема заключается в отправке POST запроса и получении ответа на этапе загрузки картинки на сервер.
Код метода 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();
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");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д