无法使用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;

并得到错误->{"无法从传输连接读取数据:已建立的连接被主机中的软件中止。"}

无法使用REST API在querystring中发布大型XML

您可以根据您的场景应用不同的解决方案。这是一个webform应用程序,webapi还是mvc?如果您正在使用JSON媒体格式化器,则可以使用JSON数据发布。例如:{"inboundRequest":"我的xml数据"}。您的json数据将自动映射到名为inboundRequest的参数。

或者你可以发布application/x-www-form-urlencoded,就像你会从名为inboundRequest的文本框中发布xml数据一样inboundRequest = " xml文本"。同样,表单成员(inboundRequest)值将映射到您的inboundRequest参数。

如果你使用XML媒体格式化器,也一样