c#asp.net网站调用webApi

时间:2018-08-09 03:50:56

标签: c# asp.net asp.net-web-api httpclient httpresponsemessage

由于我缺乏管理线程的经验,因此遇到了问题。 我有这个动作波纹管:

 public static async Task<joueurs> loadjoueurs(int id)
        {
            joueurs EmpInfo = new joueurs();

            using (var client = new HttpClient())
            {
                //Passing service base url  
                client.BaseAddress = new Uri("http://www.myWebApi.fr/api/");

                client.DefaultRequestHeaders.Clear();
                //Define request data format  
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                //Sending request to find web api REST service resource GetAllEmployees using HttpClient  
                HttpResponseMessage Res = await client.GetAsync("joueurs?id=" + id);

                //Checking the response is successful or not which is sent using HttpClient  
                 if (Res.IsSuccessStatusCode)
                  {
                      //Storing the response details recieved from web api   
                      var EmpResponse = Res.Content.ReadAsStringAsync().Result;

                      //Deserializing the response recieved from web api and storing into the Employee list  
                       EmpInfo = JsonConvert.DeserializeObject<joueurs>(EmpResponse);
                      return EmpInfo;
                  }

                return null;
            }

这只是从webApi获取我的数据的客户端(没有ssl没有身份验证,当我测试它时,我会收到正确的值) 但是当我使用上述功能(在asp.net网站上)进行呼叫时....它始终停留在HttpResponseMessage = await ....中。

在我的webApi中,我有两个函数名称相同但参数不同。

 public async Task<IHttpActionResult> Getjoueur(int iduser, int idsport)

 public async Task<IHttpActionResult> Getjoueur(int id)

所以我不知道问题出在哪里。

(续集)这是我称之为任务的地方:

public SuperModel(int id)
        {
            this.joueur =  Repojoueurs.loadjoueurs(id).Result;
       /*     this.classificationSport =  Repoclassificationsport.loadclassificationsport().Result;
             ...
       */
        }

然后在我的Home控制器中实例化我的超模型:

public ActionResult Index(int id)
        {
            SuperModel superModel = new SuperModel(id);


            return View(superModel);
        }

1 个答案:

答案 0 :(得分:0)

您能否尝试不使用 async wait 。围绕以下三个变化

public static HttpResponseMessage loadjoueurs(int id)
    {

            HttpResponseMessage Res = client.GetAsync("joueurs?id=" + id);

return Request.CreateResponse(HttpStatusCode.OK,EmpInfo, "application/json");
     }