Проблема с HttpWebRequest и URL-адресом публикации, содержащим значения

#c# #post #httpwebrequest

#c# #Публикация #httpwebrequest

Вопрос:

Я пытаюсь опубликовать URL-адрес, который выглядит примерно так: «http://domain.com/api/?application_id=useramp;format=jsonamp;session_token=1824dsf1u312asd14 «

Я использую приведенный выше URL-адрес запроса и записываю свои данные в поток следующим образом:

 byte[] ByteQuery = Encoding.UTF8.GetBytes(post_body);
httpWebRequest.ContentLength = ByteQuery.Length;
Stream QueryStream = httpWebRequest.GetRequestStream();
QueryStream.Write(ByteQuery, 0, ByteQuery.Length);
QueryStream.Close();
  

Все в порядке, веб-страница получает данные post без проблем. Проблема в том, что он возвращает ошибку, подобную этой:

{«stat»: «сбой», «диагностика»:»0 2.6 25.22″, «ошибка»:{«code»: 6, «message»: «метод (usermgmt.add) не может изменить application_id на (user) в том же запросе, когда установлено значение (null-app)».}}

Итак, мой вопрос в том, как мне обработать отправку данных post на эту страницу? application_id должен быть установлен для достижения желаемых результатов. Я также пытался отправить его через RequestStream, но безрезультатно.

Мои данные post в виде строки выглядят следующим образом:

метод=usermgmt.addamp;uid_to_add=5452007164amp;api_signature=amp;track=H40alhZWzp

Запрос, который я пытаюсь воспроизвести: http://pastebin.com/c38Cq3AR

Комментарии:

1. Можете ли вы указать нам на определение для сервиса? Он сообщает вам, что для запроса установлено значение null-app , и это проблема для этого запроса? Есть ли какой-нибудь способ настроить приложение?

2. Мне кажется, что параметры URI не передаются на веб-сайт. Как вы создаете свой httpWebRequest ?

3. @svick Параметры передаются. Вы можете сказать, потому что ошибка содержит значение application_id, заданное в URI.

4. @NickLarsen Я не думаю, что есть способ настроить приложение. Взгляните на этот PasteBin, чтобы увидеть запрос, который я пытаюсь воспроизвести. pastebin.com/c38Cq3AR

5. @FoxyGT: Я ничего не вижу, я бы посоветовал отправить их команде поддержки электронное письмо с просьбой о помощи.

Ответ №1:

Попробуйте это:

 using System.IO;
using System.Net;
using System.Text;
using System.Collections.Specialized;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var values = new NameValueCollection();
            values.Add("method", "usermgmt.add");
            values.Add("uid_to_add", "5452007164");
            values.Add("api_signature", "");
            values.Add("track", "H40alhZWzp");

            var wc = new WebClient();
            wc.Headers.Add(HttpRequestHeader.Cookie, "a=bamp;c=d");
            wc.Headers.Add(HttpRequestHeader.Referer, "http://www.tagged.com/meetme.html");

            var returnBytes = wc.UploadValues("http://domain.com/api/?application_id=useramp;format=jsonamp;session_token=1824dsf1u312asd14", values);
            var returnJson = Encoding.UTF8.GetString(returnBytes);
        }
    }
}
  

вы все еще получаете тот же ответ?

РЕДАКТИРОВАТЬ: возможно, здесь учитываются файлы cookie и / или ссылки? Если это так, я добавил их в код…

Комментарии:

1. вы установили файлы cookie? Предполагается, что вы должны войти в систему для этого?

2. @Bruno Файлы cookie установлены, и да, вы должны войти в систему.

3. вы написали какой-либо код для первого входа в систему и получения файлов cookie responde для использования в приведенном выше коде?

4. Я успешно вошел в систему. Ответ, который я получаю, был бы другим, если бы я не использовал свои файлы cookie для аутентификации.

5. если вы используете метод UploadString из WebClient, получаете ли вы тот же результат?