-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-datatext/xml

代わりに、 aWebClientと組み合わせて使用​​し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 に答える