-3
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>NOVA</title>
</head>
<body>
<form method="post" action="file.com/">
<table>
  <tr>
    <td>dataType</td>
    <td><input type="text" name="dataType" value="xml"></td>
  </tr>
  <tr>
    <td>actionType</td>
    <td><input type="text" name="actionType" value="query"></td>
  </tr>
  <tr>
    <td>accountid</td>
    <td><input type="text" name="accountid" value="121758"></td>
  </tr>
  <tr>
    <td>checksum</td>
    <td><input type="text" name="file" value="123"></td>
  </tr>
  <tr>
    <td></td>
    <td style="text-align:right"><input type="submit" value="send"></td>
  </tr>
</table>
</form>
</body>
</html>

这是我尝试过的。

string xml = @"<Array><dataType>xml</dataType><actionType>query</actionType><accountid>121758</accountid><file>" + "123" + "</file></Array>";
WebRequest req = null;
WebResponse rsp = null;

string uri = "https://file.com/";
req = WebRequest.Create(uri);
req.Method = "POST";
req.ContentType = "text/xml";
StreamWriter writer = new StreamWriter(req.GetRequestStream());
writer.WriteLine(xml);
writer.Close();
rsp = req.GetResponse();

但这不一样。我想和 form.submit(); 完全一样

4

1 回答 1

2

你的代码比需要的更复杂。这也是不正确的。例如,ContentType应该是multipart/form-data,不是text/xml

相反,将 aWebClient与 a 结合使用NameValueCollection

using(WebClient client = new WebClient()) {
    NameValueCollection formValues = new NameValueCollection();
    formValues.Add("dataType", "xml");
    client.UploadValues("http://www.somesite.com/SomePage.aspx", formValues);
}

如果您还需要捕获响应,请使用以下方法:

byte[] response = null;

using(WebClient client = new WebClient()) {
    NameValueCollection formValues = new NameValueCollection();
    formValues.Add("dataType", "xml");
    response = client.UploadValues("http://www.somesite.com/SomePage.aspx", formValues);
}
于 2012-12-07T13:47:50.273 回答