我正在尝试在一个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循环外部返回它。但我不确定应该存储每个服务调用的所有响应的对象类型。
答案 0 :(得分:0)
您可以将回复存储在列表中。
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;
}