通过按钮 C# 从 Post 请求获取页面
Getting page from Post request via button press C#
我正在尝试从选择按钮后生成的网页中获取信息。此信息是从 Post 请求(我认为)生成的,我正在尝试使用 c# 发送此请求。我对不同 post 请求的所有尝试都导致了 404 错误。我还尝试使用扩展程序以及 google chrome 和 Internet Explorer 来查找按下按钮时发送的信息,但是我没有发现任何结论。我已经看到 post 关于如何发送 post 请求的文章,但到目前为止没有任何帮助。
我有一个如下所示的网页:
<FORM METHOD="POST" ACTION="/postYYYY">
<INPUT TYPE="submit" VALUE="YY YYYY">
</FORM>
</TD>
</TR>
<TR align="center">
<TD><BR>
<FORM METHOD="POST" ACTION="/postXXXX">
<INPUT TYPE="submit" VALUE="XX XXXX">
和如下所示的 C# 代码:
WebRequest request = WebRequest.Create("http://192.168.254.12/postXXXX");
byte[] buffer = System.Text.Encoding.GetEncoding(1252).GetBytes("VALUE=XX XXXX");
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
Stream requestStream = request.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Close();
Console.Write(buffer.Length);
Console.Write(request.ContentLength);
WebResponse myResponse = request.GetResponse();
string result = "";
StreamReader reader = new StreamReader(myResponse.GetResponseStream());
result = reader.ReadToEnd();
Console.WriteLine(result);
我收到 404 错误 - 我认为这是由于我的 POST 文本引起的,但我没有尝试过或 HTML 中的信息的任何组合都有效...
异常:
`'System.Net.WebException' 类型的未处理异常发生在 System.dll
其他信息:远程服务器返回错误:(404) 未找到。`
我已经解决了我的问题。
Post 请求不需要任何 "content" 提交,因此将信息写入缓冲区无法正常工作。我不知道在这种情况下发送 POST 请求的首选方法,但对我来说......我通过更改
解决了这个问题
byte[] buffer = System.Text.Encoding.GetEncoding(1252).GetBytes("whatever");
至
byte[] buffer = System.Text.Encoding.GetEncoding(1252).GetBytes("");
此外,实际上我拥有的大部分代码都不需要。最终代码:
WebRequest request = WebRequest.Create("http://192.168.254.12/postInstrumentStatus");
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
WebResponse myResponse = request.GetResponse();
string result = "";
StreamReader reader = new StreamReader(myResponse.GetResponseStream());
result = reader.ReadToEnd();
Console.WriteLine(result);
如有不妥之处,请指正。我确定我有一些误解。
我正在尝试从选择按钮后生成的网页中获取信息。此信息是从 Post 请求(我认为)生成的,我正在尝试使用 c# 发送此请求。我对不同 post 请求的所有尝试都导致了 404 错误。我还尝试使用扩展程序以及 google chrome 和 Internet Explorer 来查找按下按钮时发送的信息,但是我没有发现任何结论。我已经看到 post 关于如何发送 post 请求的文章,但到目前为止没有任何帮助。
我有一个如下所示的网页:
<FORM METHOD="POST" ACTION="/postYYYY">
<INPUT TYPE="submit" VALUE="YY YYYY">
</FORM>
</TD>
</TR>
<TR align="center">
<TD><BR>
<FORM METHOD="POST" ACTION="/postXXXX">
<INPUT TYPE="submit" VALUE="XX XXXX">
和如下所示的 C# 代码:
WebRequest request = WebRequest.Create("http://192.168.254.12/postXXXX");
byte[] buffer = System.Text.Encoding.GetEncoding(1252).GetBytes("VALUE=XX XXXX");
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
Stream requestStream = request.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Close();
Console.Write(buffer.Length);
Console.Write(request.ContentLength);
WebResponse myResponse = request.GetResponse();
string result = "";
StreamReader reader = new StreamReader(myResponse.GetResponseStream());
result = reader.ReadToEnd();
Console.WriteLine(result);
我收到 404 错误 - 我认为这是由于我的 POST 文本引起的,但我没有尝试过或 HTML 中的信息的任何组合都有效...
异常: `'System.Net.WebException' 类型的未处理异常发生在 System.dll
其他信息:远程服务器返回错误:(404) 未找到。`
我已经解决了我的问题。
Post 请求不需要任何 "content" 提交,因此将信息写入缓冲区无法正常工作。我不知道在这种情况下发送 POST 请求的首选方法,但对我来说......我通过更改
解决了这个问题byte[] buffer = System.Text.Encoding.GetEncoding(1252).GetBytes("whatever");
至
byte[] buffer = System.Text.Encoding.GetEncoding(1252).GetBytes("");
此外,实际上我拥有的大部分代码都不需要。最终代码:
WebRequest request = WebRequest.Create("http://192.168.254.12/postInstrumentStatus");
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
WebResponse myResponse = request.GetResponse();
string result = "";
StreamReader reader = new StreamReader(myResponse.GetResponseStream());
result = reader.ReadToEnd();
Console.WriteLine(result);
如有不妥之处,请指正。我确定我有一些误解。