Как настроить таблицу маршрутизации и использовать await client.GetAsync - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть метод, который вызывает веб-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, и я не уверен, что полностью понимаю правила.

1 Ответ

0 голосов
/ 15 февраля 2019

Я действительно решил проблему.Это был параметр метода, который является целым числом.

public async Task<ActionResult<Member>> GetMember(int id)

изменил его на

public async Task<ActionResult<Member>> GetMember(string id)

Теперь все работало так, как должно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...