c# - 带参数的 ASP.NET Web Api HttpClient.GetAsync

标签 c# asp.net web-services rest asp.net-web-api

我有以下 Web Api 方法签名

public HttpResponseMessage GetGroups(MyRequest myRequest)

在客户端中,如何将 MyRequest 传递给调用方法?

目前,我有这样的东西

var request = new MyRequest()
{
    RequestId = Guid.NewGuid().ToString()
};

var response = client.GetAsync("api/groups").Result;

如何将 request 传递给 GetAsync

如果是POST方法,我可以这样做

var response = client.PostAsJsonAsync("api/groups", request).Result;

最佳答案

您不能为 HTTP GET 请求发送消息正文,因此,您不能使用 HttpClient 执行相同的操作。但是,您可以使用请求消息中的 URI 路径和查询字符串来传递数据。例如,您可以有一个类似 api/groups/12345?firstname=bill&lastname=Lloyd 的 URI 和这样的参数类 MyRequest

public class MyRequest
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

由于 MyRequest 是一个复杂类型,您必须像这样指定模型绑定(bind)。

public HttpResponseMessage GetGroups([FromUri]MyRequest myRequest)

现在,MyRequest 参数将包含来自 URI 路径和查询字符串的值。在这种情况下,Id 将为 12345,FirstName 将为 bill,LastName 将为 Lloyd。

关于c# - 带参数的 ASP.NET Web Api HttpClient.GetAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18886626/

相关文章:

c# - 获取 Web 服务引用的实例

c# - 使用二维数组和方法的乘法表

c# - 在服务器端访问客户端变量

c# - 如何在多个列上的数据集的数据表之间定义数据关系?

c# - 浏览器关闭时停止调试 Visual Studio 2013

asp.net - SignalR 协商阶段发生 CORS 错误

php - 有没有什么好的通用 PHP MySQL HTTP 隧道?

java - src/main/resources 文件被 src/test/resources 覆盖

c# - ITextSharp 异常读取 pdf : Rebuild failed: Dictionary key "" is not a name

c# - 按方法的返回值对对象列表进行排序