Подтвердить что ты не робот

Является ли WebRequest правильным инструментом С# для взаимодействия с веб-сайтами?

Я пишу небольшой инструмент на С#, который нужно будет отправлять и получать данные на/с веб-сайта, используя POST и json-форматирование. Я никогда не делал ничего подобного раньше на С# (или на любом другом языке), поэтому я изо всех сил пытаюсь найти полезную информацию, чтобы начать работу.

Я нашел некоторую информацию о классе WebRequest в С# (специально из здесь), но прежде чем начать погружение в него, я задавался вопросом, это был правильный инструмент для работы.

Я нашел множество инструментов для преобразования данных в json-формат, но не намного больше, поэтому любая информация была бы действительно полезной здесь, если бы я закончил тупик.

4b9b3361

Ответ 1

WebRequest и, более конкретно, класс HttpWebRequest - хорошая отправная точка для того, чего вы хотите достичь. Чтобы создать запрос, вы будете использовать WebRequest.Create и нарисовать созданный запрос для HttpWebRequest, чтобы фактически использовать его. Затем вы создадите свои данные и отправляете их в поток, например:

HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("http://mysite.com/index.php");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
string postData = "var=value1&var2=value2";
req.ContentLength = postData.Length;

StreamWriter stOut = new
StreamWriter(req.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(postData);
stOut.Close();

Аналогично, вы можете прочитать ответ с помощью метода GetResponse, который позволит вам прочитать результирующий поток ответов и делать все, что вам нужно. Дополнительную информацию о классе можно найти по адресу:

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx

Ответ 2

WebClient иногда проще использовать, чем WebRequest. Вы можете взглянуть на него.

Для десериализации JSON вы захотите посмотреть класс JavaScriptSerializer.

Пример WebClient:

using (WebClient client = new WebClient ())
{
    //manipulate request headers (optional)
    client.Headers.Add (HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

    //execute request and read response as string to console
    using (StreamReader reader = new StreamReader(client.OpenRead(targetUri)))
    {
        string s = reader.ReadToEnd ();
        Console.WriteLine (s);
    }
}

Отмечено как wiki в случае, если кто-то хочет обновить код

Ответ 3

Когда дело доходит до POSTing данных на веб-сайт, System.Net.HttpWebRequest (специфичная для HTTP реализация WebRequest) является совершенно приличным решение. Он поддерживает SSL, асинхронные запросы и множество других лакомств и хорошо документирован в MSDN.

Полезная нагрузка может быть любой: данные в формате JSON или что угодно - до тех пор, пока вы установите свойство ContentType на то, что сервер ожидает и понимает (скорее всего, приложение /json, text/json или text/x-json), все будет хорошо.

Одна потенциальная проблема при использовании HttpWebRequest из системной службы: поскольку она использует прокси-сервер IE и учетную информацию, поведение по умолчанию может быть немного странным при работе в качестве пользователя LOCALSYSTEM (или, в основном, любой учетной записи, которая не регистрируется в интерактивном режиме регулярно). Настройка свойств прокси и аутентификации на Nothing (или, как вы, например, С#, люди предпочитают ее называть, null, я думаю), следует избегать этого.

Ответ 4

Я использовал WebRequest для взаимодействия с веб-сайтами. Это правильный "инструмент"

Я не могу комментировать аспекты JSON вашего вопроса.

Ответ 5

Чтобы преобразовать из экземпляра объекта в форматированную строку json и наоборот, попробуйте Json.NET: http://json.codeplex.com/

В настоящее время я использую его для проекта, и он легко учится и работает, и предлагает некоторую гибкость с точки зрения сериализации и конвертеров настраиваемого типа. Он также поддерживает синтаксис LINQ для запроса ввода json.

Ответ 6

Самый высокий рейтинг ответа полезен, но он не отправляет и не получает JSON.

Вот пример, который использует JSON для отправки и получения:

Как разместить объект json в веб-сервисе

И вот вопрос StackOverflow, который помог мне больше всего решить эту проблему:

Проблемы с отправкой и получением JSON между веб-службой ASP.net и веб-клиентом ASP.Net

И вот еще один смежный вопрос:

вызов json с С#