#c# #asp.net #stream #streamreader
#c# #asp.net #течение #потоковый считыватель
Вопрос:
Я использую streamreader для получения значений из URL-адреса. Все это прекрасно работает для 20 полей, но я столкнулся с проблемой с одним конкретным полем, которое отображается как имеющее значение, но возвращает значение null, как показано на рисунке ниже.
Это не проблема с разрешениями, так как все остальные поля работают нормально (на приведенном выше скриншоте показана только сокращенная версия для удобства). Кроме того, и веб-браузер, и приложение c# работают от имени одного и того же пользователя.
string url = "test.com"; WebRequest myReq = WebRequest.Create(url); string credentials = "username:pwd"; CredentialCache mycache = new CredentialCache(); myReq.Headers["Authorization"] = "Basic " Convert.ToBase64String(Encoding.ASCII.GetBytes(credentials)); myReq.Method = "GET"; myReq.ContentType = "application/json"; WebResponse wr = myReq.GetResponse(); Stream receiveStream = wr.GetResponseStream(); StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8); string content = reader.ReadToEnd();
Я действительно застрял в том, что может быть причиной того, что он возвращается как нулевой. Надеюсь, кто-нибудь укажет мне правильное направление!
Комментарии:
1. streamreader не возвращает null, он просто возвращает строку, поэтому вы можете посмотреть, что генерирует ответ, если строка не соответствует вашим ожиданиям..
2. согласно @JonasH, я немного сбит с толку. StreamReader просто считывает байты и выдает вам строку. Он ничего не знает о «полях». Это похоже на json, поэтому я ожидал бы, что там будет какая-то десериализация json. У современного HttpClient есть несколько простых шаблонов для этого. Дата-время в json «нечетное». Он сериализуется в виде строки. Сериализаторы проанализируют его, чтобы вернуться к дате и времени. Неясно, какие инструменты вы там используете. Но «просмотрщик html», вероятно, не поймет json (?)