Получение данных с помощью WebRequest - PullRequest
0 голосов
/ 24 апреля 2009

Получив какой-то код от msdn, я раздражен, что он не работает точно так, как я хочу прямо сейчас. Я пытаюсь использовать Google Translate, чтобы, ну, переводить некоторые вещи для меня на лету. Проблема в том, что responseFromServer не содержит переведенного текста, а также источник, когда я смотрю на него с помощью браузера, хотя при взгляде на саму страницу гордо отображается chien.

void getTranslation()
    {
        WebRequest request = WebRequest.Create("http://translate.google.com/translate_t?hl=en#en|fr|dog");
        // Get the response.
        WebResponse response = request.GetResponse();
        // Display the status.
        Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        // Get the stream containing content returned by the server.
        Stream dataStream = response.GetResponseStream();
        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);
        // Read the content.
        string responseFromServer = reader.ReadToEnd();
        int index = 0;
        while (responseFromServer.Substring(index).Contains("dog"))
        {
            index = responseFromServer.IndexOf("dog", index + 1);
            Console.WriteLine(responseFromServer.Substring(index < 50 ? 0 : index - 50, 100));
            Console.WriteLine(" ");
        }
    }

Кто-нибудь знает, что я здесь не понимаю? Или веб-сайта, который возвращает перевод так же просто, как запрос?

Ответы [ 2 ]

3 голосов
/ 24 апреля 2009

Причина в том, что сам запрос на перевод является асинхронным AJAX-запросом. Если вы просматриваете источник страницы, которую пытаетесь получить, вы не найдете слова chien.

Вы можете взглянуть на Google AJAX Language API , чтобы достичь желаемого.

2 голосов
/ 24 апреля 2009

Это не работает, потому что это приложение использует javascript для автоматической публикации.

Если вы хотите сделать это с помощью скриншпа, вам нужно будет выполнить POST-запрос к URL формы с правильными параметрами.

Однако для вас было бы более целесообразно использовать их API , а не веб-копирование.

...