我正在使用需要两个参数的 MVC控制器使用网络API 。根据参数,数据将以Json格式返回。如何使用具有两个参数的api? api-url:http://www.example.com/apiname/methodname/ 参数: 参数1 param2
api键详细信息: api键:x-api键 api键值:apikeyvalue
示例:http://www.example.com/apiname/methodname/param1/param2
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(@"apiurl");
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("x-api-key", "apikeyvalue");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//HTTP GET
var responseTask = client.GetAsync("GetAttendances");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = result.Content.ReadAsAsync<IEnumerable<MonitoringCallsViewModel>>();
readTask.Wait();
}
else //web api sent error response
{
//log response status here..
ModelState.AddModelError(string.Empty, "Server error. Please contact administrator.");
}
}
}
答案 0 :(得分:1)
我从您的解释中没有得到太多详细信息,但是您可以通过两种方式使用api端点。第一个是api通过查询获取参数,您可以将这些变量设置为查询(请求url),如下所示。
public static string YourUrlSetterFunc(string baseUri, int id, int categoryId)
{
return $"{baseUri}/endpoint-route?firstParam={firstParam}&secondPram={secondPram}";
}
或者您可以设置那些不是从url获取的变量,而是通过适当的HttpClient方法调用FormData。示例如下所示。
var serializeObject = _jsonSerializer.Serialize(YourClassThatHoldsParams);
using (var requestContent = new StringContent(serializeObject, System.Text.Encoding.UTF8, "application/json"))
{
using (var responseMessage = await PostAsync(requestUri, requestContent))
{
response = _jsonSerializer.DeSerialize<TV>(await responseMessage.Content.ReadAsStringAsync());
}
}
通过这种方式,您可以将JSON响应读取为字符串,然后将其反序列化为想要的对象。希望这能解决您的问题。