2017-03-24 443 views
0

我是新的创建Web Api的,我需要传递一个字符串到GetAsync方法,但我不知道我应该添加到WebApiConfig文件和更改后如何GetAsync。我在这里搜索过,但我找不到任何帮助我的东西。任何人都可以帮助我吗?将参数(字符串)传递给GetAsync()?

我的方法:

private async void registrarServico(string nomeServico) 
{ 
    using (HttpClient clientGet = new HttpClient()) 
    using (HttpClient clientSet = new HttpClient()) 
    { 
     clientGet.BaseAddress = new Uri("api/ControladorServico/GetServico"); 
     var respostaGet = await clientGet.GetAsync("", nomeServico); //ERROR HERE! 
    } 
} 

我WebApiConfig:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{action}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

我的API方法:

[HttpGet] 
public IHttpActionResult GetServico(string nomeServico) 
{ 
    try 
    { 
     return Ok(controladorServicoRep.CONTROLADOR_SERVICOSep.Get(d => d.NOME == nomeServico && d.MAQUINA == nomeMaquina).FirstOrDefault()); 
    } 
    catch (Exception) 
    { 
     throw; 
    } 
} 

谢谢。

+2

你的基址没有一个服务器指定...哪个服务器,你指望它连接到?目前还不清楚你面临什么问题。 “我需要传递一个字符串给GetAsync” - 你的意思是你有一个你想传递的字符串,但是你不知道该怎么做?或者API迫使你传递一个字符串,但你不知道要传递什么?而你说“错误在这里”,但你没有告诉我们关于你看到什么错误的任何信息...... –

+0

GetAsyn()方法只有一个参数是“GetAsync(string requestUri)”。我想知道如何将“nomeServico”参数与“requestUri”一起添加。 –

+1

那么这就是ID,所以它需要成为你传入的URI的一部分......我想你可能需要阅读一些关于如何在MVC中工作的文章。 –

回答

1

好做这样的事情:

public async Task<TResult> GetAsync<TResult>(string uriString) where TResult : class 
    { 
     var uri = new Uri(uriString); 
     using (var client = GetHttpClient()) 
     { 
      HttpResponseMessage response = await client.GetAsync(uri); 
      if (response.StatusCode != HttpStatusCode.OK) 
      { 
       //Log.Error(response.ReasonPhrase); 
       return default(TResult); 
      } 
      var json = await response.Content.ReadAsStringAsync(); 
      return JsonConvert.DeserializeObject<TResult>(json, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); 
     } 
    } 

然后你就可以作为调用这个:

var uriString = string.Format("{0}/{1}", "http://hostaddress/api/ControladorServico/GetServico", nomeServico); 
var result = await GetAsync<YourModel>(uriString); 
相关问题