通过按钮从邮件请求获取页面按C#

时间:2015-11-24 18:31:17

标签: c# html post webrequest webresponse

我试图从选择按钮后生成的网页获取信息。此信息是从Post请求生成的(我认为),我正在尝试使用c#发送此请求。我对不同发布请求的所有尝试都导致404错误。我还尝试使用扩展程序以及谷歌浏览器和网络浏览器来查找按钮按下时发送的信息,但我没有找到任何结论。我看过有关如何发送帖子请求的帖子,但到目前为止没有任何帮助。

我有一个看起来像这样的网页:

<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中的信息的任何组合都有效......

例外情况: `类型&#39; System.Net.WebException&#39;未处理的异常发生在System.dll

其他信息:远程服务器返回错误:(404)Not Found。

1 个答案:

答案 0 :(得分:0)

我已经弄明白了。

帖子请求不需要任何&#34;内容&#34;提交,因此将信息写入缓冲区无法正常工作。在这种情况下,我不知道发送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);

如果有任何错误,请纠正我。我确信我有一些误解。