#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, получаете ли вы тот же результат?