Asp.net web api 如何将xml传递给Asp.net Web Api 2 Get函数

Asp.net web api 如何将xml传递给Asp.net Web Api 2 Get函数,asp.net-web-api,httpclient,Asp.net Web Api,Httpclient,只是被困在这里很久了。我想也许有人能帮我找到正确的方向。我已经创建了一个ASP.NET Web API 2应用程序。有一个函数将返回所有船舶。现在我想在控制器函数中接收一个xml。我怎样才能做到这一点。下面是我的HttpClient调用代码,它给了我错误的请求错误。有人可以指导我如何将xml传递给Web api函数吗 路由 public static void Register(HttpConfiguration config) { // Web API

只是被困在这里很久了。我想也许有人能帮我找到正确的方向。我已经创建了一个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
            {

            }
HttpClient=newhttpclient();
client.BaseAddress=新Uri(“http://localhost:53633/");
client.DefaultRequestHeaders.Accept.Add(
新的MediaTypeWithQualityHeaderValue(“应用程序/xml”);
字符串testXml=“”;
var url=“api/summaryfunction/”+testXml;
HttpResponseMessageResponse=client.GetAsync(url).Result;
if(响应。IsSuccessStatusCode)
{
var result=response.Content.ReadAsStringAsync().result;
}
其他的
{
}

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


如果Xml太大,也可能会遇到一些问题。“大到什么程度”在很大程度上取决于客户端和服务器之间存在的基础结构。

感谢您的回复,但Uri.EscapeDataString不起作用。事实上,我在测试中尝试了非常简单的xml,但由于请求错误也失败了。不确定如何在此处传递xml。@Leo您需要显示控制器操作方法签名以及路由。@Leo是名为
SummaryFunctionController
的控制器吗?您真的希望整个XML作为
id
参数的值吗?@LEo通常您会在POST或PUT的正文中传递XML。理论上,把它作为URI的一个参数并没有错,事实上我需要在get和post中传递XML。XML包含api控制器函数的大量信息。