Запрос URL-адреса метаданных OData завершается ошибкой, если я установил версию
Следующий код получает 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 ответ
Решение
Согласно документации, заголовок OData-версииOData-Version
не DataServiceVersion
.
Основываясь на моем тесте с использованием Postman, это то, что вызывало ошибку 500.
И, кстати, рассмотрите возможность использования HttpClient
вместо того WebClient
, работает асинхронно и легче, чем WebClient
. Смотрите это и это.