Faseeh Haris Ответов: 1

Restsharp строки запроса URL-адреса автоматически добавляются вопроса Слэш в конце точка


Я пытаюсь попасть в smartfile api, этот api отлично работает с помощью postman, но когда я добавляю параметр строки запроса в url, он выдает ошибку.

Мне нужно, чтобы ниже url-адрес был создан при отправке запроса в smartfile
https://app.smartfile.com/api/2/path/info?children=true[^]

но когда мой код выполняется, он добавляет косую черту в конце информации и выдает мне ошибку запрещенной ссылки. эта ошибка только из-за URL-адрес. ниже URL-адрес является генерация из кода

https://app.smartfile.com/api/2/path/info/?children=true[^]

Что я уже пробовал:

string urlParameters = "?children=true";

     HttpClient client = new HttpClient();
     client.BaseAddress = new Uri("https://app.smartfile.com/api/2/path/info");
     //Authorization added somewhere in the code,
     // Add an Accept header for JSON format.
     client.DefaultRequestHeaders.Accept.Add(
     new MediaTypeWithQualityHeaderValue("application/json"));

     // List data response.
     HttpResponseMessage response = client.GetAsync(urlParameters).Result;

1 Ответов

Рейтинг:
8

MadMyche

Похоже, что код видит ваш urlParameters как относительный URL-адрес и добавление косой черты к базовому URL-адресу, как это предусмотрено.

HttpClient.Собственность Базовому Адресу (Системы.Нет.Протокол HTTP) | Майкрософт Документы[^]

Замечания:
При отправке объектами httprequestmessage с относительным URI, URI-адрес в сообщение будет добавлена в собственность базовому адресу, чтобы создать абсолютный URI.
Что бы я сделал, чтобы обойти это, так это не ставить базовый адрес вообще и передать URL-адрес непосредственно в метод GetAsynch
string urlParameters = "?children=true";
HttpClient client = new HttpClient();

// remove next line
// client.BaseAddress = new Uri("https://app.smartfile.com/api/2/path/info");

// Authorization added somewhere in the code,
// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Add(new mediaTypeWithQualityHeaderValue("application/json"));

// List data response.
HttpResponseMessage response = client.GetAsync("https://app.smartfile.com/api/2/path/info" + urlParameters).Result;


Faseeh Haris

Супер быстрый производитель решений. Спасибо, теперь все в порядке. :)

MadMyche

Рад, что это сработало