1

だから私は完全にコードから同じドメイン内のフォームに投稿したい. フォームデータを含める方法を除いて、必要なものはすべて揃っていると思います。含める必要がある値は、隠しフィールドと入力フィールドからのものです。それらを呼び出しましょう。

<input type="text" name="login" id="login"/>
<input type="password" name="p" id="p"/>
<input type = hidden name="a" id="a"/>

私がこれまでに持っているのは

WebRequest req = WebRequest.Create("http://www.blah.com/form.aspx")
req.ContentType = "application/x-www-form-urlencoded"
req.Method = "POST"

これら 3 つの入力フィールドの値をリクエストに含めるにはどうすればよいですか?

4

2 に答える 2

3
NameValueCollection nv = new NameValueCollection();
nv.Add("login", "xxx");
nv.Add("p", "yyy");
nv.Add("a", "zzz");

WebClient wc = new WebClient();
byte[] ret = wc.UploadValues(""http://www.blah.com/form.aspx", nv);
于 2013-01-12T19:21:29.180 に答える
0

上記の私のコメントで提供されているリンクに示されているように、WebClient ではなく WebRequest を使用している場合、おそらくすべきことは、& で区切られたキーと値のペアの文字列を作成し、値 url をエンコードすることです。

  foreach(KeyValuePair<string, string> pair in items)
  {      
    StringBuilder postData = new StringBuilder();
    if (postData .Length!=0)
    {
       postData .Append("&");
    }
    postData .Append(pair.Key);
    postData .Append("=");
    postData .Append(System.Web.HttpUtility.UrlEncode(pair.Value));
  }

リクエストを送信するときは、この文字列を使用して ContentLength を設定し、RequestStream に送信します。

request.ContentLength = postData.Length;
using(Stream writeStream = request.GetRequestStream())
{
    UTF8Encoding encoding = new UTF8Encoding();
    byte[] bytes = encoding.GetBytes(postData);
    writeStream.Write(bytes, 0, bytes.Length);
}

ニーズに合わせて機能を抽出できる場合があるため、多くのメソッドに分割する必要はありません。

于 2013-01-15T02:10:14.200 に答える