Nano Hash - криптовалюты, майнинг, программирование

Неверные данные HttpWebResponse от HttpWebRequest C#

Я пытаюсь загрузить HttpWebResponse в XmlDocument и получаю исключение «Данные на корневом уровне недействительны. Строка 1, позиция 1». Если я вывожу ответ на консоль, я получаю «system.net.connectstream». Учетные данные не кажутся моей проблемой, потому что, если я ввожу неправильный пароль, мое исключение изменяется на ошибку 404. Вот мой код...

string username = "username";
string password = "password";
string url = "https://myurl.com";

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Credentials = new NetworkCredential(username, password);
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
XmlDocument xmlDoc = new XmlDocument();
Console.WriteLine(response.GetResponseStream());
xmlDoc.Load(response.GetResponseStream());

Спасибо!


Ответы:


1

Звонок ToString на GetResponseStream() мало что вам даст — Stream.ToString не переопределяется.

Я предлагаю вам использовать что-то вроде этого для отладки:

// Prefer casting over "as" unless you're going to check it...
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
{
    using (Stream stream = response.GetResponseStream())
    {
        // For diagnostics, let's assume UTF-8
        using (StreamReader reader = new StreamReader(stream))
        {
            Console.WriteLine(reader.ReadToEnd());
        }
    }
}

Затем замените среднюю часть (with StreamReader) вызовом XmlDocument.Load.

Я подозреваю, что вы увидите, что это в основном недопустимый XML, но приведенное выше должно показать вам, что это такое на самом деле.

РЕДАКТИРОВАТЬ: Ваш комментарий показывает данные как:

{"messages":{"message":"1 Device(s) returned."},"devices":{"device":
    {"@id":"00","uuid":"00000000","phonenumber":"000‌​000",
     "user name":"0000","name":"Guy,Somebody","platform":"platform","os":"III",
     "version":"1‌​.1.1"}},"appName":"someApp"}

Это JSON. Это не XML. Не пытайтесь загрузить его как XML. У вас есть два варианта:

  • Измените то, что вы запрашиваете, чтобы получить ответ XML, если сервер поддерживает это.
  • Анализируйте его как JSON (например, с помощью Json.NET), а не как XML.
02.08.2012
  • StreamReader позволяет мне получить данные и убедиться, что я получаю правильные данные, но когда я возвращаю XMLDocument.Load обратно, я получаю ту же ошибку. Вот как выглядит поток (с удаленными данными)... 02.08.2012
  • {messages:{message:1 Device(s) return.},devices:{device:{@id:00,uuid:00000000,номер телефона:000000,имя пользователя:0000,name:Guy,Somebody,platform:platform,os :III,версия:1.1.1}},appName:someApp} 02.08.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..