Проблема с методом Photo.Save Ошибка 100

Создание Desktop-приложений, виджеты ВКонтакте для сайтов и публичных страниц, OAuth 2.0, Open API, Standalone
Ответить
Afalex
Сообщения: 1
Зарегистрирован: 24 авг 2013, 15:57

Проблема с методом Photo.Save Ошибка 100

Сообщение Afalex »

Бьюсь о грабли, не пойму где они

Выдает такой документ:

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

This XML file does not appear to have any style information associated with it. The document tree is shown below.<error><error_code>100</error_code><error_msg>One of the parameters specified was missing or invalid: photos_list is invalid</error_msg><request_params list="true"><param><key>oauth</key><value>1</value></param><param><key>method</key><value>photos.save.xml</value></param><param><key>server</key><value>316216</value></param><param><key>gid</key><value>57370658</value></param><param><key>aid</key><value>178554524</value></param><param><key>photo</key><value>[{"photo":"673fc968ed:z","sizes":[["s","316216621","b074","tr4_U3VYzlQ",75,56],["m","316216621","b075","kLkenyFHMPI",130,97],["x","316216621","b076","3jEY5QIrhy0",604,453],["y","316216621","b077","b2S2YXSwR8o",807,605],["z","316216621","b078","m8SUuO-1ZBo",1024,768],["o","316216621","b079","SvlNfBygyHw",130,98],["p","316216621","b07a","ND9l4SOlN0c",200,150],["q","316216621","b07b","ZVKsY1e44Yw",320,240],["r","316216621","b07c","AVHLE3Q-7Ns",510,383]],"kid":"774d4453523eced272351d755b64ae29"}]</value></param><param><key>hash</key><value>*****</value></param><param><key>access_token</key><value>******</value></param></request_params></error>
Сам код на c#:

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

            System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };            System.Net.WebRequest post_request2 = System.Net.WebRequest.Create("https://api.vkontakte.ru/method/photos.getUploadServer?gid=57370658&aid=178554524&access_token=" + Settings1.Default.token);            System.Net.WebResponse post_request_response2 = post_request2.GetResponse();            System.IO.Stream post_request_stream2 = post_request_response2.GetResponseStream();            System.IO.StreamReader post_request_stream_reader2 = new System.IO.StreamReader(post_request_stream2);            string post_request_answer2 = post_request_stream_reader2.ReadToEnd();            string[] words_empty = post_request_answer2.Split('"');            string s = words_empty[5];             s = s.Replace("\\/", "/");            s = s.Replace("\\/", "/");            s = s.Replace("\\/", "/");               //отправка файла на полученый сервер            NameValueCollection nvc = new NameValueCollection();            //nvc.Add("user", "user");            //nvc.Add("passwd", "passwd");            string s9;            s9 = HttpUploadFile(s, @"C:\1.jpg", "photo", "image/jpeg", nvc);             char[] delimiterChars = { ':', ',' };            string[] parameters = s9.Split(delimiterChars);            string server = parameters[1];             char[] delimiterChars2 = { ':' };            string[] parameters2 = s9.Split(delimiterChars2);            string hash = parameters2[8];             char[] delimiterChars3 = { '"' };            string[] parameters3 = hash.Split(delimiterChars3);            hash = parameters3[1];                          string photo = s9.Substring(s9.IndexOf("photo") + 14, s9.IndexOf("aid") - s9.IndexOf("photo") - 17);              MessageBox.Show(photo);               photo = photo.Replace("\\\"", "\"");              //сохранение фотографии на сервере             string url3 = "https://api.vk.com/method/photos.save.xml?server=" + server + "&gid=57370658" + "&aid=178554524" + "&photo=" + HttpUtility.UrlEncode(photo) + "&hash=" + hash + "&access_token=" + Settings1.Default.token;            textBox3.Text = textBox3.Text + " ---------- " + url3;             System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };            System.Net.WebRequest post_request3 = System.Net.WebRequest.Create(url3);            System.Net.WebResponse post_request_response3 = post_request3.GetResponse();            System.IO.Stream post_request_stream3 = post_request_response3.GetResponseStream();            System.IO.StreamReader post_request_stream_reader3 = new System.IO.StreamReader(post_request_stream3);            string post_request_answer3 = post_request_stream_reader3.ReadToEnd(); 
функция отправки файла:

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

      public static string HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc)        {            Console.WriteLine(string.Format("Uploading {0} to {1}", file, url));            string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");            byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");             HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);            //wr.ContentType = "multipart/form-data; boundary=" + boundary;            wr.ContentType = "multipart/form-data; boundary=" + boundary;            wr.Method = "POST";            wr.KeepAlive = true;            wr.Credentials = System.Net.CredentialCache.DefaultCredentials;               Stream rs = wr.GetRequestStream();             string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";            foreach (string key in nvc.Keys)            {                rs.Write(boundarybytes, 0, boundarybytes.Length);                string formitem = string.Format(formdataTemplate, key, nvc[key]);                byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);                rs.Write(formitembytes, 0, formitembytes.Length);            }            rs.Write(boundarybytes, 0, boundarybytes.Length);             string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";            string header = string.Format(headerTemplate, paramName, file, contentType);            byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);            rs.Write(headerbytes, 0, headerbytes.Length);             FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);            byte[] buffer = new byte[4096];            int bytesRead = 0;            while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)            {                rs.Write(buffer, 0, bytesRead);            }            fileStream.Close();             byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");            rs.Write(trailer, 0, trailer.Length);            rs.Close();             WebResponse wresp = null;            try            {                wresp = wr.GetResponse();                Stream stream2 = wresp.GetResponseStream();                                StreamReader reader2 = new StreamReader(stream2);                                //Form Form1 = new Form1();                 //Form                 //textBox6.Text = reader2.ReadToEnd();                  //MessageBox.Show(s3);                 //Console.WriteLine(string.Format("File uploaded, server response is: {0}", reader2.ReadToEnd()));                  string s3 = reader2.ReadToEnd();                 return s3;               }            catch (Exception ex)            {                Console.WriteLine("Error uploading file", ex);                if (wresp != null)                {                    wresp.Close();                    wresp = null;                }                  wresp = wr.GetResponse();                Stream stream2 = wresp.GetResponseStream();                StreamReader reader2 = new StreamReader(stream2);                   string s3 = reader2.ReadToEnd();                 return s3;              }            finally            {                wr = null;            }          }
Ответить