#c# #httpclient
Вопрос:
C#, Фреймворк 4.5
RestSharp 105.2.3 (версия работает на платформе 4.5)
Я отправляю запрос GET в api со строкой запроса, имеющей шестнадцатеричное значение — для тире. API не будет принимать тире, он должен быть отформатирован с -. Как Uri create, так и запрос GET через C# HttpClient или RestSharp преобразуют — в тире при выполнении запроса. Кто — нибудь знает параметр или свойство, которое предотвратит преобразование запроса в тире?
//this is a mock of the initial value
var httpUrl = "https://theapiendpointwithhex.com/api/order?orderid=bee3d72e-8170-4bad-ba95632b09de42ad"
//creating a new Uri
Uri rsUri = new Uri(httpUrl);
//if you view the querytring, it has converted the 2D to dash:
string httpUrlQuery = rsUri.Query;
//httpUrlQuery is ?orderid=bee3d72e-8170-4bad-ba95632b09de42ad
Даже если я исправлю его или использую оригинал в запросе HttpClient, он преобразует его в тире.
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://theapiendpointwithhex.com");
var result = client.GetAsync("/api/order?orderid=bee3d72e-8170-4bad-ba95632b09de42ad").Resu<
var testContent = result.Content.ReadAsStringAsync().Resu<
необработанный запрос, который я вижу в fiddler, — это
ПОЛУЧИТЬ https://theapiendpointwithhex.com/api/order?orderid=bee3d72e-8170-4bad-ba95632b09de42ad
Если я изменю тире на — в fiddler и повторю запрос, он вернет успех
То же самое произойдет, если я попробую другую библиотеку, такую как RestSharp, И это произойдет, если я добавлю строку запроса в качестве параметра в restsharp, например
RestClient rsClient = new RestClient(hostAndPath);
RestRequest rsRequest = new RestRequest(Method.GET);
rsRequest.AddQueryParameter("orderid","bee3d72e-8170-4bad-ba95632b09de42ad"); //converts this to dashes in request
var restResponse = rsClient.Execute(rsRequest);
Комментарии:
1.
-
не является зарезервированным символом URL-адреса, поэтому вы можете утверждать, что это ошибка на сервере.