1

我已经用一个控制器构建了一个 REST API,该控制器具有一个带有 4 个参数的 POST 方法,如下所示 -

 [HttpPost]
    public void SaveSession([FromBody] string userId, [FromBody] DateTime issueDateTime, [FromBody] string browserType, [FromBody] string salt)
    {
        // Params need to be changed
        _sessionService.SaveSession(userId, issueDateTime, browserType, salt);
    }

我应该如何在客户端发布数据,我的意思是要发送的数据的格式应该是什么?

我试过这种格式-

"userId=abc&DateTime=someDatetime&browserType=somebrowser&salt=somesalt"

如果我尝试这个它不起作用,甚至没有调用 Web 服务方法

谁能告诉我正确的格式?

编辑:这是我调用 API 的方式-

            const string endPoint = @"http://localhost:85/session/Test";
            var postData = "userId=abc&DateTime=someDatetime&browserType=somebrowser&salt=somesalt"
            var request = (HttpWebRequest) WebRequest.Create(EndPoint + parameters);
            request.Method = "POST";
            request.ContentLength = 0;
            request.ContentType = "application/x-www-form-urlencoded";

            if (!string.IsNullOrEmpty(postData) && Method == HttpVerb.POST)
            {
                var encoding = new UTF8Encoding();
                var bytes = Encoding.GetEncoding("iso-8859-1").GetBytes(postData);
                request.ContentLength = bytes.Length;

                using (var writeStream = request.GetRequestStream())
                {
                    writeStream.Write(bytes, 0, bytes.Length);
                }
            }

            using (var response = (HttpWebResponse) request.GetResponse())
            {
                var xmlDoc = new XmlDocument();

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    var message = String.Format("Request failed. Received HTTP {0}", response.StatusCode);
                    throw new ApplicationException(message);
                }

                // grab the response
                var responseStream = response.GetResponseStream();
                if (responseStream != null)
                {
                    xmlDoc.Load(responseStream);
                }
                return (xmlDoc);
            }

谢谢!

4

2 回答 2

0

我假设路由已正确配置。

这么说......控制器方法中的 DateTime 参数已命名为“issueDateTime”,而在请求中已命名为“DateTime”。

于 2013-09-27T21:43:01.790 回答
0

我知道了,我做错了什么。我在 WebService 方法中发送 4 个参数。我们只能在调用 Web 服务方法时发送一个参数。如果要发送多个数据,只需将其作为对象发送即可。像这样 -

[HttpPost]
public void SaveSession([FromBody] Values value)
{
    var userId = values.userId,
    var issueDateTime= values.issueDateTime,
    var browserType= values.browserType,
    var salt= values.salt,

    _sessionService.SaveSession(userId, issueDateTime, browserType, salt);
}
于 2013-10-07T22:08:45.010 回答