Я думаю, вы были ужалены этой проблемой .Короче говоря, URI в client.BaseAddress
нуждается в косой черте в конце.
Однако я бы не добавил его просто, я бы подумал сделать это немного по-другому.Предположительно, ваш BaseUrl
уже имеет косую черту, если вы добавляете "auth/GetToken"
к нему.Я бы сделал это следующим образом:
client.BaseAddress = new Uri(BaseUrl);
...
var response = await client.PostAsync("auth/GetToken", content);
Как видите, HttpClient
очень точно соответствует тому, как ваш код уже настроен, то есть у вас есть "базовый" адрес с косой чертой иВы хотите добавить к нему конкретный вызов.
Это должно привести вас к этому.Следующее, что вам нужно будет сделать, это десериализовать ответ JSON, чтобы вы могли получить из него токен.Это похоже на то, как вы делали это в RestSharp, за исключением того, что response.Content
не является строкой в мире HttpClient
, поэтому вам нужен еще один шаг, чтобы получить это:
var json = await response.Content.ReadAsStringAsync();
GetTokenResults g = JsonConvert.DeserializeObject<GetTokenResults>(json);
return g.Token;
Последнее, что выдля компиляции нужно сделать следующее: изменить сигнатуру метода на:
public async Task<string> GetTokenAsync
Последнее замечание: вы сейчас находитесь в асинхронном мире, и это хорошо, но вам нужно знать, как использоватьэто правильно, иначе вы можете получить тупики и другие загадочные ошибки.Короче говоря, не блокирует асинхронный код , вызывая .Result
или .Wait()
в любом месте стека вызовов.Это самая распространенная ошибка, которую делают люди.Используйте async/await
до упора .