如何将xml传递给Asp.net Web Api 2获取功能

时间:2014-04-09 15:56:07

标签: asp.net-web-api httpclient

现在已经被困在这里很久了。以为有人可能会把我放在正确的方向。我创建了一个ASP.NET Web API 2应用程序。有一个功能可以归还所有船只。现在我想在我的控制器功能中接收一个xml。我怎样才能做到这一点。下面是我的HttpClient调用代码,它给出了错误的请求错误。有人可以指导我如何将xml传递给Web api函数。

路由

public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

控制器操作

public IHttpActionResult GetSummaryFunction(string id)
        {
            return Ok(id);
        }

客户代码

HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("http://localhost:53633/");

            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/xml"));

            string testXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SummaryRQ  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/Test.WebAPI.Controllers\" Version=\"1.00\" Target=\"Test\"><POS><Source Login=\"test\" Password=\"test\"></Source></POS></SummaryRQ>";

            var url = "api/summaryfunction/" + testXml;

            HttpResponseMessage response = client.GetAsync(url).Result;

            if (response.IsSuccessStatusCode)
            {
                var result = response.Content.ReadAsStringAsync().Result;
            }
            else
            {

            }

1 个答案:

答案 0 :(得分:0)

至少您需要将testXml字符串传递给Uri.EscapeDataString function

如果你的Xml太大,你可能会遇到一些问题。太大有多大程度上取决于客户端和服务器之间存在的基础架构。