Запрос URL метаданных OData не выполняется, если я установил версию - PullRequest
0 голосов
/ 11 апреля 2020

Следующий код получает 500:

WebRequest request =
  WebRequest.Create("https://services.odata.org/TripPinRESTierService/$metadata");
HttpWebRequest webRequest = request as HttpWebRequest;
webRequest.Accept = "application/atom+xml,application/xml";
request.Headers.Add("DataServiceVersion", "4.0");
request.Headers.Add("OData-MaxVersion", "4.0");
webRequest.AutomaticDecompression =
  DecompressionMethods.Deflate | DecompressionMethods.GZip;

// this throws the 500
var response = request.GetResponse();

Но это удается:

WebRequest request =
   WebRequest.Create("https://services.odata.org/TripPinRESTierService/$metadata");
HttpWebRequest webRequest = request as HttpWebRequest;
webRequest.Accept = "application/atom+xml,application/xml";
request.Headers.Add("OData-MaxVersion", "4.0");
webRequest.AutomaticDecompression =
  DecompressionMethods.Deflate | DecompressionMethods.GZip;
var response = request.GetResponse();

Это выдает ошибку:

WebRequest request = 
  WebRequest.Create("https://services.odata.org/TripPinRESTierService/Airlines");
HttpWebRequest webRequest = request as HttpWebRequest;
webRequest.Accept = "application/atom+xml,application/xml";
request.Headers.Add("DataServiceVersion", "4.0");
request.Headers.Add("OData-MaxVersion", "4.0");
webRequest.AutomaticDecompression =
  DecompressionMethods.Deflate | DecompressionMethods.GZip;

// this throws the 500
var response = request.GetResponse();

Есть ли что-то особенное, где Я не должен указывать DataServiceVersion при запросе метаданных?

1 Ответ

0 голосов
/ 13 апреля 2020

Согласно документам , заголовок для OData-версии: OData-Version, а не DataServiceVersion.

На основании моего теста с использованием Почтальон это то, что выдает ошибку 500.

И кстати, рассмотрите возможность использования HttpClient вместо WebClient, работает асинхронно и легче, чем WebClient. См. это и это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...