C#从html POST显示XML

时间:2012-09-09 05:20:29

标签: c# .net xml http-post

这里遇到了问题...如果我把XML文件放在服务器上,那么我可以通过steamReader读取它,转换为变量并让所有内容都在MSSQL数据库中运行。

但是,我需要通过html POST发送,但它不适用于以下代码:

page.Response.ContentType = "text/xml";
StreamReader reader = new StreamReader(page.Request.InputStream);
inputString = reader.ReadToEnd();
deleteShip(inputString);

在我看来,上面的代码没有从我的程序中获得那个POST的XML。因为对于deleteShip中的相同代码,如果我在服务器上使用xml,那么它可以正常工作。

有没有办法解决这个问题?只要我可以发送任何字符串到deleteShip(字符串s)然后我很高兴。该字符串将采用XML格式,但

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

了解如何将XML发布到您的程序将会很有用。通常,使用POST方法时,数据将作为HTTP请求正文中的名称 - 值对从HTML表单发送。从您的问题中不清楚您是否使用HTML表单将XML发布到您的程序中,如果没有更多信息,很难说出可能出现的问题。

从您的代码中看起来您正在读取整个HTTP请求,您通常会读取请求参数的值,例如:

Request["XmlParameterName"]

其中XmlParameterName是HTML表单输入字段的名称。

您是否检查了inputString变量的值?它是有效的XML吗?编码是否正确?是否有像&符号(&)这样的无效字符正确转义?

如果我提到的任何事情都不是问题,请用更多信息更新您的问题。

答案 1 :(得分:0)

好的,我修好了。 这是代码。

System.IO.Stream stream;
string inputString;
Int32 stringLength;

stream = Request.InputStream;
stringLength = Convert.ToInt32(stream.Length);
byte[] stringArray = new byte[stringLength];

inputString = System.Text.Encoding.ASCII.GetString(stringArray, 0, stringLength);

deleteShip(inputString); 

通过它,它将从我的html请求(在本例中为XML)访问POST正文。