C# 获取POST方式提交的参数,Request.Form["参数名"] 获取不到,可能是啥问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 获取POST方式提交的参数,Request.Form["参数名"] 获取不到,可能是啥问题相关的知识,希望对你有一定的参考价值。

我这边是一个Web,他们是一个Delphi的程序,点击一个按钮需要登录我这边的页面,用户名密码用POST方式提交,但我这边用Request.Form["参数名"] 、Request["参数名"]、Request.Param["参数名"] 都试过了,怎么都获取不到,会是什么原因呢?
回答一楼朋友,我觉得我写的应该没错,可他们觉得他们写的也没错,头疼啊...
二楼用Session保存应该是可以的,但他们那边不同意用这个.....

登录通过了吗?
如过通过之后再看其他的网页是不是需要Cookie或session
我觉得最好给CookieContainer加个ref,如下
public static string PostAndGethtml(string targetURL,ref CookieContainer cc, Hashtable param)
不然cc.Add(response.Cookies);这句就没什么意义了
参考技术A 嗯,试着用session保存表单的内容,如:Session["name"] = 表单里的字段;
然后在另一个页面获得:string str = Session["name"].ToString();
参考技术B 你的程序没有错啊,你客户端是用javascript脚本提交的吗?如果不是的话,参数名必须是input控件的name名称.而且必须放到form里面. 参考技术C 不可能,肯定是你们程序的问题

C# 向网站post参数并存储cookie

public string SendDataByPost(string Url,string postDataStr,ref CookieContainer cookie) HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); if (cookie.Count == 0) request.CookieContainer = new CookieContainer(); cookie = request.CookieContainer; else request.CookieContainer = cookie; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = postDataStr.Length; Stream myRequestStream = request.GetRequestStream(); StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")); myStreamWriter.Write(postDataStr); myStreamWriter.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString= myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString;

从网上搜的一段代码,运行时这一个会报错 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

我想问这个函数返回的是什么,是post之后的html,还是post之后的cookie??

还有是不是我用错了,这个函数怎么用。刚开始没有参数时这个参数怎么填
ref CookieContainer cookie

这是返回远程响应的,如果远程服务器无响应这里会出错
cookie 这个没有不用填写,返回的 cookie 可以从 Response 里获取
这里建议添加一个 try...catch 以捕获错误进行处理追问

不写cookie,那调用的时候怎么调用呢?
还有返回的retString是什么东西啊

追答

在调用之前,新建一个 CookieContainer,然后传入

  CookieContainer cookie = new CookieContainer();
  SendDataByPost(strUrl, strPostData, ref cooie);

retString 是使用 UTF-8 解码的返回内容

追问

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
上面这一句报错
“System.Net.WebException”类型的未经处理的异常在 System.dll 中发生
其他信息: 远程服务器返回错误: (405) 不允许的方法。
??

追答

这说明服务器不允许 POST 数据,或者发送的数据不正确等其他原因,服务器直接返回错误

参考技术A Cookie可以在POST之前生成或者在POST之后生成,Cookie只会在本地存储。

以上是关于C# 获取POST方式提交的参数,Request.Form["参数名"] 获取不到,可能是啥问题的主要内容,如果未能解决你的问题,请参考以下文章

[转]C#中POST数据和接收的几种方式

C# 模拟 post提交php页面的表单

post 和 get 方式提交数据的区别

java程序如何获取POST方式提交的数据?

C# asp.net mvc 判断代码是submit提交的还是异步提交的,如果是submit提交的,获取他是post 还是get方式

Php获取参数的几种方法