无法使用REST API在querystring中发布大型XML
本文关键字:querystring 布大型 XML API REST | 更新日期: 2023-09-27 18:09:09
我有一个rest api,我需要使用post方法发布一个大型xml。
我在inboundRequest参数下发布数据需求值的控制器。
当我像下面这样为小数据调用url时,代码工作得很好例如:http://localhost/api/GetXMl?inboundRequest="数据",但不工作时,大XML发布:
更新代码: byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(input.value);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/api/GETXMl?inboundRequest=" + input.value);
string postData = input.value;
request.ContentType = "text/xml; encoding='utf-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";
request.Timeout = 1000000000;
request.ReadWriteTimeout = 100000000;
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
string responseStr = new StreamReader(responseStream).ReadToEnd();
return responseStr;
}
return null;
并得到错误->{"无法从传输连接读取数据:已建立的连接被主机中的软件中止。"}
您可以根据您的场景应用不同的解决方案。这是一个webform应用程序,webapi还是mvc?如果您正在使用JSON媒体格式化器,则可以使用JSON数据发布。例如:{"inboundRequest":"我的xml数据"}。您的json数据将自动映射到名为inboundRequest的参数。
或者你可以发布application/x-www-form-urlencoded,就像你会从名为inboundRequest的文本框中发布xml数据一样inboundRequest = " xml文本"。同样,表单成员(inboundRequest)值将映射到您的inboundRequest参数。
如果你使用XML媒体格式化器,也一样