c# - 如何使用 RestSharp 将请求作为 Xml 发布到 Web API?

标签 c# asp.net post action asp.net-web-api

如何以 Xml 形式向 Web API 发送请求?

我正在使用以下测试:

[TestMethod]
        public void Should_post_successfully_with_valid_userDetailsList_usingRestSharp()
        {
            // arrange
            string url = string.Format("{0}/User/BulkLoad", this._baseUrlForLuis);

            var client = new RestClient(url);

            var request = new RestRequest(Method.POST)
                {
                    RequestFormat = DataFormat.Xml
                };

            request.AddBody("<user></user>");

             request.AddHeader("Accept", "application/xml");

            // act
            IRestResponse response = client.Execute<HttpResponseMessage>(request);

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
        }

我的操作如下所示;它接受一个字符串:

        [HttpPost]
        public HttpResponseMessage BulkLoad([FromBody] string userDetailsListXml)
        {
}

但 userDetailsListXml 始终为空,因此不会传递该值。

如何解决?

我尝试使用 Ajax Post,下面的代码通过了并且工作正常:

$.post("http://www.domain.com/User/BulkLoad", {"" : "<user></user>"});

但是如何让它与 RestSharp 一起工作呢?

最佳答案

var personString = "<Person><Name>Person Name</Name></Person>"; // Your XML string

var restClient = new RestClient("http://localhost:56453/api/people");

var restRequest = new RestRequest("Post", Method.POST);

restRequest.RequestFormat = DataFormat.Xml;
restRequest.AddParameter("application/xml", personString, ParameterType.RequestBody);
var response = restClient.Execute(restRequest);

不要忘记在 WebApiConfig.cs 中添加以下代码

config.Formatters.XmlFormatter.UseXmlSerializer = true;

关于c# - 如何使用 RestSharp 将请求作为 Xml 发布到 Web API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107341/

相关文章:

c# - 如何使用 jQuery 或 JavaScript 或服务器端代码获取客户端(用户)机器名称(计算机名称)。 (审查可能的方式)

c# - 空引用异常 - 为什么?

r - httr::POST 中查询和正文之间的区别

java - 缓冲阅读器 HTTP POST

angularjs - POST 请求 - Firebase - 预检响应无效(重定向) - CORS

c# - 为什么此代码适用于不同类型?

c# - 32/64 位与 .NET 可执行文件混淆

javascript - 如何在 ASP.NET GridView 上应用 Datatable jquery?

c# - Xamarin 表单 System.Reflection.TargetInitationException : 'Exception has been thrown by the target of an invocation.'

c# - 如何在vs2010中开发64位版office的Microsoft office word addin