-2

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

我有一个如下所示的网页:

<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.dll 中发生“System.Net.WebException”类型的未处理异常

附加信息:远程服务器返回错误:(404)未找到。`

4

1 回答 1

0

我已经弄清楚了我的问题。

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

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

于 2015-11-24T19:30:28.300 回答