【问题标题】:How to make a post call to a Web Api Action?如何对 Web Api 操作进行后调用?
【发布时间】:2015-11-21 05:59:27
【问题描述】:

我已经创建了如下的 Web API 操作

[HttpPost]
public void Load(string siteName, string providerName, UserDetails userDetails)
{
// implementation
}

我为此注册的路线如下(不确定是否正确?):

 config.Routes.MapHttpRoute(
             name: "loadUserDetails",
             routeTemplate: "sites/{siteName}/User/Load/{providerName}/{userDetailsList}",
             defaults: new
             {
                 controller = "User",
                 action = "Load",
                 providerName = UrlParameter.Optional
             });

providerName 参数应该是可选的,我正在使用 Xml 序列化。

该操作应响应以下网址示例:

http://www.domain.com/sites/site1/user/load/provider1/[some user details in the post]
or
http://www.domain.com/sites/site1/user/load/[some user details in the post]

我怎样才能对这个操作进行后期调用,以便我可以测试我的服务?

【问题讨论】:

  • 可选参数不需要默认值吗?
  • 可以,但可以稍后设置;该帖子不会像 c# 类那样调用此操作。稍后从 web.config 加载默认提供程序。

标签: c# asp.net asp.net-web-api


【解决方案1】:

发件人:HTTP request with post

HttpWebRequest request =
    (HttpWebRequest)WebRequest.Create(@"http:\\domain.com\page.asp");

ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "username=user";
postData += "&password=pass";
byte[] data = encoding.GetBytes(postData);

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

using (Stream stream = request.GetRequestStream())
{
    stream.Write(data,0,data.Length);
}

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

【讨论】:

  • 你发送的原始postdata,不应该是xml格式吗?另外,如果我有另一个 UserDetails userDetails 输入参数,它怎么知道它应该分配给哪个参数?!
  • 如何发送更复杂的 xml 数据?
  • 你是想发一个原始帖子吗?
【解决方案2】:

如果您的问题是如何测试您的操作,您可以使用Fidler

http://www.mehdi-khalili.com/fiddler-in-action/part-2

【讨论】:

    【解决方案3】:

    使用 RestSharp 和 Web 请求查看此处的响应:

    http://pooyakhamooshi.blogspot.co.uk/2013/04/how-to-post-request-to-web-api-web.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 2023-02-13
      • 1970-01-01
      相关资源
      最近更新 更多