繁体   English   中英

从C#应用程序调用多个Web服务

[英]Calling multiple web services from the C# application

我正在尝试在一个C#应用程序中调用多个服务。 来自一个服务的响应作为输入参数传递到另一服务。 由于响应的第一项服务是数字数组,因此在如下所示的for循环中调用其他服务

 public async Task<IHttpActionResult> Get()
 {
 ......
 var response = await iLab_client.GetAsync(uri_serviceid);
 var datafile = await response.Content.ReadAsStringAsync();
 var returnDataObj = JsonConvert.DeserializeObject<Models.ReqDTO.RootObject>(datafile);
 foreach (var req in returnDataObj.il_response.svc_req)
 {
   int request_id = req.id;

    //Calling the other service passing the input parameter

   using (var iLab_client_request = new HttpClient())
   {
    string request_Uri = BaseURL_iLab + "svc_req/"+request_id+"/c_forms.json";
    Uri uri_request = new Uri(request_Uri);
    client_request.BaseAddress = uri_request;
    client_request.DefaultRequestHeaders.Accept.Clear();
    client_request.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client_request.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
     var request_response = await client_request.GetAsync(uri_request);
     var responsefile = await request_response.Content.ReadAsStringAsync();
     var request_returnDataObj = JsonConvert.DeserializeObject<Models.DTO.RootObject>(responsefile);
     return Ok(request_returnDataObj);
  }}}

它引发错误,提示'GetResponseFromiLabAPIController.Get()': not all code paths return a value我知道我需要创建一个可以使用Add()存储响应并从for循环之外返回的对象。 但是我不确定应该存储每个服务调用的所有响应的对象类型是什么。

您可以将响应存储在列表中。

public async Task<List<IHttpActionResult>> Get()
{
    ......

    var responses = new List<IHttpActionResult>>();
    var response = await iLab_client.GetAsync(uri_serviceid);
    var datafile = await response.Content.ReadAsStringAsync();
    var returnDataObj = JsonConvert.DeserializeObject<Models.ReqDTO.RootObject>(datafile);
    foreach (var req in returnDataObj.il_response.svc_req)
    {
        int request_id = req.id;

        //Calling the other service passing the input parameter

        using (var iLab_client_request = new HttpClient())
        {
            string request_Uri = BaseURL_iLab + "svc_req/"+request_id+"/c_forms.json";
            Uri uri_request = new Uri(request_Uri);
            client_request.BaseAddress = uri_request;
            client_request.DefaultRequestHeaders.Accept.Clear();
            client_request.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client_request.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
            var request_response = await client_request.GetAsync(uri_request);
            var responsefile = await request_response.Content.ReadAsStringAsync();
            var request_returnDataObj = JsonConvert.DeserializeObject<Models.DTO.RootObject>(responsefile);
            responses.Add(request_returnDataObj);
        }
    }
    return responses;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM