繁体   English   中英

如何使用RestSharp将请求发布为Xml的Web API?

[英]How to post a Request to Web API as Xml using RestSharp?

如何以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始终为null,因此不会传递该值。

如何解决?

我用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM