У меня есть метод, который вызывает веб-API, размещенный на другом сервере по идентификатору, имени и паролю.Мой код довольно стандартный, как показано ниже:
[HttpGet("{id}")]
//[Route("api/GetMember/{id}")]
public async Task<ActionResult<Member>> GetMember(int id)
string Baseurl = "https://localhost:5001/";
string name = "something";
string password = "somethingelse";
id = 12121210;
Member member = new Member();
member.Name = name;
member.Password = password;
member.ID = id;
string uri = Baseurl + id + name + "/" + password;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage Res = await client.GetAsync("/api/member/something/somethingelse/12122110");
if (Res.IsSuccessStatusCode)
{
var MemResponse = Res.Content.ReadAsStringAsync().Result;
member = JsonConvert.DeserializeObject<Member>(MemResponse);
}
return Ok(member);
}
}
Выше работает без проблем и возвращает строку JSON.Однако, когда я заменяю следующую строку
HttpResponseMessage Res = await
client.GetAsync("/api/member/something/somethingelse/12122110");
на следующую
string uri = Baseurl + id + name + "/" + password;
HttpResponseMessage Res = await client.GetAsync(uri);
, я получаю следующее
{StatusCode: 403, ReasonPhrase: 'Forbidden', Version: 1.1, Content:
System.Net.Http.HttpConnection+HttpConnectionResponseContent, Headers: {
Cache-Control: private Server: Microsoft-IIS/10.0 X-SourceFiles: =?UTF-8?
B?SDpcQVRQLkZPX1NDX0NHSVxBVFBGT1NlcnZpY2U=?= X-Powered-By: ASP.NET Date:
Thu, 14 Feb 2019 16:49:04 GMT Content-Type: text/html; charset=utf-8
Content-Length: 5390 }}
Что я делаю не так?это мое первое приложение веб-API, и я не уверен, что полностью понимаю правила.