none
Consumir serviço webapi em aplicação MVC RRS feed

  • Pergunta

  • Olá, preciso utilizar alguns serviços WebApi em uma aplicação MVC, porém preciso neste serviço enviar o token e um parâmetro, sendo um método Post.

    Agradeço a ajuda, pois tentei vários exemplos sem êxito.

    terça-feira, 5 de abril de 2016 12:29

Respostas

  • Aconselho a utilizar o fiddler para testes. Sabe qual o tipo de autenticação utilizada? Ser for 'Basic' seria algo como :

    private static HttpClient SetCredential()
    {
             HttpClient httpClient;

             var credentials = new System.Net.NetworkCredential("user", "password");
             var handler = new HttpClientHandler { Credentials = credentials };
             httpClient = new HttpClient(handler);

             httpClient.BaseAddress = new Uri("http://endereco_api.com");

             httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

              return httpClient;
     }

    • Marcado como Resposta Marcos Bazilio terça-feira, 28 de junho de 2016 16:09
    quarta-feira, 6 de abril de 2016 13:53

Todas as Respostas

  • Dois caminhos possíveis:

    • A biblioteca WebAPI Client
    • O framework RestSharp

    Embora os exemplos desses artigos que publiquei estejam utilizando requisições GET, a troca por POST é bem simples:

    http://netcoders.com.br/blog/compressao-web-api-parte-2/

    http://netcoders.com.br/blog/servicos-restful-com-a-biblioteca-restsharp/

    • Sugerido como Resposta Renato GroffeMVP terça-feira, 5 de abril de 2016 12:39
    terça-feira, 5 de abril de 2016 12:39
  •   public async Task<string> GetingAllData(Par par)
            {
               
                using (var client = new HttpClient())
                {
    
                    var formContent = new FormUrlEncodedContent(new[]{ 
                                      new KeyValuePair<string, string>("Nome", par.Nome), 
                    });
    
                    //setup client
                    client.BaseAddress = new Uri("http://xx.xx.xxx.xxx/api/v3cadpar/dadospes/consultaPar");
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + par.token);
    
    
    
    
    
    
                    HttpResponseMessage response = await client.PostAsync("http://xx.xx.xx.xxx/api/v3cadpar/dadospes/consultaPar", formContent);
                    var responseString = await response.Content.ReadAsStringAsync();
                    return responseString;
    
                }           
            }

    terça-feira, 5 de abril de 2016 13:28
  • Fiz um teste desta forma... mas não deu certo

    terça-feira, 5 de abril de 2016 13:30
  • Qual o erro?
    terça-feira, 5 de abril de 2016 16:32
  • Ele não acessa o webapi, ele não passa o token
    terça-feira, 5 de abril de 2016 17:16
  • Tente utilizar o Fiddler, para analisar o erro que é gerado e tentar ir trilhando melhor o problema:

    http://www.devmedia.com.br/utilitario-fiddler-monitoramento-de-web-services/31274

    terça-feira, 5 de abril de 2016 18:19
  • Aconselho a utilizar o fiddler para testes. Sabe qual o tipo de autenticação utilizada? Ser for 'Basic' seria algo como :

    private static HttpClient SetCredential()
    {
             HttpClient httpClient;

             var credentials = new System.Net.NetworkCredential("user", "password");
             var handler = new HttpClientHandler { Credentials = credentials };
             httpClient = new HttpClient(handler);

             httpClient.BaseAddress = new Uri("http://endereco_api.com");

             httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

              return httpClient;
     }

    • Marcado como Resposta Marcos Bazilio terça-feira, 28 de junho de 2016 16:09
    quarta-feira, 6 de abril de 2016 13:53