Я нахожу URL-адрес, который возвращает длинный набор JSON (ДЕЙСТВИТЕЛЬНО длинный, 20 миллионов символов). Просто вставляя URL-адрес в Chrome, для возврата полного набора результатов требуется около 3 минут. Какими бы ни были настройки по умолчанию в Chrome, он несколько раз запрашивает у меня либо «Убить страницу», либо «Подождите». Но страница вернется через несколько минут.Почему мой веб-запрос C# не возвращает ничего?
Я запускаю это из SSIS с задачей скрипта. Я не очень хорошо знаком с C#. Я скопировать/вставить этот код из образца:
{
HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(wUrl);
httpWReq.Method = "GET";
httpWReq.ContentType = "application/json";
httpWReq.Timeout = 300000;
HttpWebResponse httpWResp = (HttpWebResponse)httpWReq.GetResponse();
RootObject jsonResponse = null;
try
{
//Get the stream of JSON
Stream responseStream = httpWResp.GetResponseStream();
//Deserialize the JSON stream
using (StreamReader reader = new StreamReader(responseStream))
{
//Deserialize our JSON
DataContractJsonSerializer sr = new DataContractJsonSerializer(typeof(RootObject));
jsonResponse = (RootObject)sr.ReadObject(responseStream);
}
}
//Output JSON parsing error
catch (Exception e)
{
FailComponent(e.ToString());
}
return jsonResponse;
Я 110% уверен, что строка wURL является допустимым JSON конечной точки. Когда я пошагово моего кода, он ждет, может быть, 15 секунд на этой линии:
HttpWebResponse httpWResp = (HttpWebResponse)httpWReq.GetResponse();
... и затем возвращается без ошибок ... но это не заселить то, что я ожидал бы в httpWResp (ContentLength = -1). Когда он достигает:
jsonResponse = (RootObject)sr.ReadObject(responseStream);
... jsonResponse содержит мой предварительно определенный контейнерный объект json, установленный в null. Из моего URL-адреса возвращаются тысячи json-массивов.
Я не вижу никаких интересных атрибутов в responseStream, которые указывали бы, что на самом деле он содержит что-нибудь?
Что мне здесь не хватает?
Я не могу опубликовать фактический URL, потому что это URL частной компании.
=================================
EDIT: Я попробовал URL с гораздо более короткая строка, и она вернулась. Таким образом, это похоже на длину. Я запустил возвращаемое значение через валидатор, и он преуспел ... возможно, особый персонаж, но я думаю, что это длина.
пут попробовать поймать вокруг вашего кода и увидеть, что исключение он бросает, если таковые имеются. try {Your Code here} catch (WebException ex) {// catch web exception} catch (Exception ex) {// Любое другое исключение} – Hakunamatata
какая версия сервера .net/sql вы используете? Библиотека HttpWebRequest претерпела довольно много изменений за последние несколько лет – AllMadHare
@AllMadHare, я использую .NET Framework v 4.6.1 с SSIS VS 2015, указав на SQL Server 2012. Я не думаю, что SQL Server должен что-то с этим связано, так как я еще не добавил какие-либо компоненты SQL Server в свой пакет? Я добавил блок try/catch. Это не исключение. Возможно ли, что ответ слишком длинный для получения ...? – Quicksilver