客户端通过xmlhttp.send(str)传给服务器端的str参数要怎么获取。 不要通过域名网址传参,和send内部变量传参。 就单独的获取一个没有变量的参数

客户端通过xmlhttp.send(str)传给服务器端的str参数要怎么获取。
不要通过域名网址传参,和send内部变量传参。
就单独的获取一个没有变量的参数值。

作者: fjzzywl   发布时间: 2011-06-16

服务端通过 Request.InputStream 读取。

作者: fangxinggood   发布时间: 2011-06-16

引用 1 楼 fangxinggood 的回复:

服务端通过 Request.InputStream 读取。


Stream str = Request.InputStream;
还是读不到。

作者: fjzzywl   发布时间: 2011-06-16

客户端应该是用Post。

作者: fangxinggood   发布时间: 2011-06-16

POST提交,数据应该是键值对,在服务器端Request["KeyName"]应该可以获取到对应的值。

作者: penginpha   发布时间: 2011-06-16

引用 3 楼 fangxinggood 的回复:

客户端应该是用Post。

我用POST就会出现这个异常。我是服务器新手,麻烦说清楚一点。

<b> 异常详细信息: </b>System.Web.HttpRequestValidationException: 从客户端(&lt;?xml version=&quot;...='UTF-8'?&gt;&lt;SOAP-ENV:Envelope S...&quot;)中检测到有潜在危险的 Request.Form 值。<br><br>

作者: fjzzywl   发布时间: 2011-06-16

引用 4 楼 penginpha 的回复:
POST提交,数据应该是键值对,在服务器端Request["KeyName"]应该可以获取到对应的值。

keyname是指send里面的变量名称吗?

作者: fjzzywl   发布时间: 2011-06-16

客户端post,还要指定ContentType="application/xml"

你最好把你自己简单的代码示例贴出来。上面只是提供大体的思路。具体步骤还是需要你自己实现。

作者: fangxinggood   发布时间: 2011-06-16

谢谢:fangxinggood;

%3c%3fxml+version='1.0'+encoding%3d'UTF-8'%3f%3e%3c
得到的参数是有转义的,怎么还原。

作者: fjzzywl   发布时间: 2011-06-16

正常客户端Post,写到RequestStream里,服务端直接从InputStream里用StreamReader读取不需要解码的厄。不知道你怎么弄出这效果。

不过,可以用 HttpUtility.UrlDecode 解码。(需要添加 System.Web.dll)

作者: fangxinggood   发布时间: 2011-06-16

MSXML2.XMLHTTPClass objHTTP = new MSXML2.XMLHTTPClass();
  objHTTP.open("Post ", url, false, Type.Missing, Type.Missing);
  objHTTP.setRequestHeader("Content-Type ", "application/x-www-form-urlencoded");
  //ContentType="application/xml",读取不到值。
  objHTTP.setRequestHeader("Content-Length ", RequestString.Length.ToString());
  objHTTP.setRequestHeader("SOAPAction ", url);
  objHTTP.setRequestHeader("ReadTimeout ", "Infinite");
  objHTTP.send(RequestString);

我是用这样发送的。这样获取到的值就是转义的。而且我是通过Request.Form读取的。
用Request.InputStream里面的streamreader异常,提示此流上不支持超时。
readertimeout:str.ReadTimeout”引发了“System.InvalidOperationException”类型的异常。

作者: fjzzywl   发布时间: 2011-06-16

objHTTP.setRequestHeader("Content-Type ", "application/xml");

----

服务端:
string xml = "";
using (var sr = new StreamReader(Request.InputStream))
  xml = sr.ReadToEnd();

BTW: 客户端直接用 HttpWebRequest 或者 WebClient 多好啊。

作者: fangxinggood   发布时间: 2011-06-16