本文整理汇总了C#中IHttpHandler.Call方法的典型用法代码示例。如果您正苦于以下问题:C# IHttpHandler.Call方法的具体用法?C# IHttpHandler.Call怎么用?C# IHttpHandler.Call使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IHttpHandler
的用法示例。
在下文中一共展示了IHttpHandler.Call方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Call
public async Task<object> Call(IHttpHandler httpHandler, string baseUrl, Dictionary<string, object> arguments, HttpApiInstrumenter apiInstrumenter = null)
{
var request = new HttpApiRequest { Url = Url.CreateUrl(baseUrl), Method = Method, Headers = Headers.ToList() };
Action<Func<IHttpArgumentHandler, string, object, Task>> applyArguments = async applier =>
{
foreach (var item in ArgumentHandlers)
{
var name = item.Key;
object argument;
if (arguments.TryGetValue(name, out argument))
{
var handler = item.Value;
await applier(handler, name, argument);
}
}
};
applyArguments(async (handler, name, argument) => await handler.ApplyArgument(request, name, argument));
Func<HttpApiRequest, Task<HttpApiResponse>> call = async apiRequest => await httpHandler.Call(apiRequest);
HttpApiResponse response;
if (apiInstrumenter != null)
response = await apiInstrumenter(request, call);
else
response = await call(request);
applyArguments(async (handler, name, argument) => await handler.ApplyArgument(response, name, argument));
return await ResponseHandler.HandleResponse(request, response);
}