Заливка картинок в контакт

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
IbraM
Сообщения: 6
Зарегистрирован: 27 ноя 2010, 14:57

Заливка картинок в контакт

Сообщение IbraM »

Есть вопрос. В vkontakte API насчет заливки например тех же фоток есть следующая документация:

===================================================
Загрузка фотографий на сервер ВКонтакте от имени пользователя осуществляется приложением в 3 этапа:

1. С помощью метода photos.getUploadServer приложение узнает http-адрес для загрузки фотографий. При вызове этого метода можно указать параметр save_big равным 1, тогда помимо стандартных размеров фотографии будут сохраняться в более высоком качестве.

2. Приложение формирует POST-запрос на полученный адрес.
Запрос должен содержать поля file1-file5, которые содержат файлы с изображениями (JPG, PNG, BMP или GIF).

В ответ приложение получает следующие данные в формате JSON:
{"server": '1', "photos_list": '2,3,4', "aid": '5', "hash": '12345abcde'}

3. С помощью метода photos.save приложение передает серверу полученные данные (server, photos_list, aid и hash) и получает данные о загруженных изображениях.

Фотографии загружены.
=============================================
Первый и третий этапы можно сказать я реализовал, а вот со вторым проблема. Никак не могу норм пост запрос составить для отправки файлов, чтобы мне в ответ возвращалось поле photo_list не пустым, как это происходит сейчас.
Пишу на шарпе. Код запроса ниже смотрите:

Код: Выделить всё

         string SendPOST(string URL, string[] fileNames)        {            try            {                string boundary = Guid.NewGuid().ToString().Replace("-", "");                string header = "--" + boundary;                string headerCloser = header + "--";                 hwr = (HttpWebRequest)WebRequest.Create(URL);                hwr.Method = "POST";                hwr.PreAuthenticate = true;                hwr.AllowWriteStreamBuffering = true;                hwr.AutomaticDecompression = DecompressionMethods.GZip;                hwr.ProtocolVersion = HttpVersion.Version10;                hwr.UserAgent = "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.62";                hwr.Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1";                hwr.Headers.Add("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8");                hwr.Headers.Add("Accept-Charset", "iso-8859-1, utf-8, utf-16, *;q=0.1");                hwr.Headers.Add("Accept-Encoding", "deflate, gzip, x-gzip, identity, *;q=0");                hwr.Headers.Add("Cache-Control", "no-cache");                hwr.ContentType = "multipart/form-data; boundary=" + boundary;                hwr.KeepAlive = false;                 if (fileNames.Length > 5)                    throw new vKontakteException("Превышено число загружаемых картинок");                 Stream s = hwr.GetRequestStream();                StreamWriter sw = new StreamWriter(s);                for (int i = 0; i < fileNames.Length; i++)                {                    sw.WriteLine(header);                    sw.WriteLine("Content-Disposition: form-data; name=\"file" + (i + 1).ToString() + "\"");                    sw.WriteLine("Content-Type: application/octet-stream");                    sw.WriteLine();                    string fileCont = Encoding.GetEncoding(1251).GetString(File.ReadAllBytes(fileNames[0]));                    sw.WriteLine(fileCont);                    sw.WriteLine();                }                sw.Write(headerCloser);                sw.Close();                 wr = (HttpWebResponse)hwr.GetResponse();                StreamReader sr = new StreamReader(wr.GetResponseStream(), Encoding.UTF8);                string response = sr.ReadToEnd();                wr.Close();                 return response;            }            catch (WebException webExc)            {                throw new vKontakteException(webExc.Message);            }        } 
Ответить