С#: RestClient: RestRequest не работает для заголовка в нижнем регистре

У меня есть код ниже на С#, который использует RestClient. Проблема в том, что заголовки не должны быть чувствительны к регистру, но выглядят так, как будто они есть.

var client = new RestClient(sMA_URL);
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");

//Without the line below the RestRequest adds some default header which is not acceptable by our server. 
 request.AddHeader("**Accept**", "*/*");
 request.AddHeader("content-type", "application/json");
 request.AddHeader("authorization", "Bearer "+sBearerToken);

// Make sure you deserialize this response, for further use. The best way to do this is to create a class and then fill that with the values obtained by the response but if a response is not used many times,
// you can do it the way it has been done in Bearer Token Generation

 IRestResponse response = client.Execute(request);

 Console.WriteLine(response.Content);
 Console.ReadKey();

Когда я даю принять (в нижнем регистре), он жалуется на тип содержимого, но Accept (в верхнем регистре) работает нормально. Нет, ошибка в отношении типа содержимого. Я не могу понять, связана ли проблема со службой, которую она пытается вызвать, или с самим RestClient.

Это код состояния, который я получаю (без исключений) «NotAcceptable Content-Type»


person Ekta    schedule 23.06.2016    source источник
comment
вы получаете какое-либо исключение или не могли бы вы показать нам ответное сообщение и код?   -  person Siraj Mansour    schedule 23.06.2016
comment
Добавлен статус возврата   -  person Ekta    schedule 23.06.2016


Ответы (1)


Что ж, ответ включен в ответ, он говорит сам за себя.

«Неприемлемый тип контента»

Приведенное выше сообщение означает, что API, служба или конечная точка, на которую вы пытаетесь отправить запрос, отклоняет ваш запрос на основе заголовка content-type, который равен «application/json».

Поскольку вы отправляете запрос GET, я не понимаю, зачем вообще нужно указывать content-type.

Попробуйте удалить заголовок content-type и, возможно, ваш запрос сработает.

Добавление заголовка content-type будет использоваться для запросов POST или PUT, когда вы отправляете тело/полезную нагрузку в запросе (пример: json, данные формы, xml, multipart, и т. д.), и даже для этого типа запросов это все еще не является обязательным, если сервер, на который вы отправляете свои запросы, не требует от вас указать content-type.

person Siraj Mansour    schedule 23.06.2016
comment
Проблема в том, что когда я даю заголовок Accept в нижнем регистре, он жалуется на тип содержимого, но когда я даю Aceept (в верхнем регистре), это не так. Я хочу знать, связана ли проблема со службой, которую я вызываю, или с RestClient. Я не могу удалить его полностью, потому что он уже давно является частью кода. - person Ekta; 27.06.2016
comment
Я бы предположил, что он не смог прочитать этот заголовок и проглотил любое исключение, которое он выдал. - person Callum Linington; 27.06.2016
comment
Если вы пытаетесь изолировать причину, исключите своего клиента из уравнения и используйте скрипача или почтальона. Если вы все еще получаете исключение исключения, это служба. - person JDBennett; 27.06.2016