Asp.net web api 如何将xml传递给Asp.net Web Api 2 Get函数
只是被困在这里很久了。我想也许有人能帮我找到正确的方向。我已经创建了一个ASP.NET Web API 2应用程序。有一个函数将返回所有船舶。现在我想在控制器函数中接收一个xml。我怎样才能做到这一点。下面是我的HttpClient调用代码,它给了我错误的请求错误。有人可以指导我如何将xml传递给Web api函数吗 路由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
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控制器函数的大量信息。