2011-01-26 6 views
0

私は、ボタンクリック時にURLにPOSTデータを送信するために次のコードを使用しています。私はこのデータと共にフォーム名を送ることができる必要があります。助言がありますか?C#を使用したHTTPポストフォーム - フォームの投稿名

string url = "http://www.someurl.com"; 
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
    string proxy = null; 

    string data = String.Format("{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}&{10}={11}", 
        txtName.ClientID, txtName.Text, 
        txtEmail.ClientID, txtEmail.Text, 
        txtLanguages.ClientID, txtLanguages.Text, 
        txtPhone.ClientID, txtPhone.Text, 
        txtAdditional.ClientID, txtAdditional.Text); 
    byte[] buffer = Encoding.UTF8.GetBytes(data); 

    req.Method = "POST"; 
    req.ContentType = "application/x-www-form-urlencoded"; 
    req.ContentLength = buffer.Length; 
    req.Proxy = new WebProxy(proxy, true); // ignore for local addresses 
    req.CookieContainer = new CookieContainer(); // enable cookies 

    Stream reqst = req.GetRequestStream(); // add form data to request stream 
    reqst.Write(buffer, 0, buffer.Length); 
    reqst.Flush(); 
    reqst.Close(); 
+0

「フォーム名」とはどういう意味ですか? –

+0

+0

あなたはフォームデータをURLにエンコードしていないので、ユーザーが"& "などの文字を入力すると問題に遭遇します。あなたがString.Format()に渡す各データ値の.EscapeUriString()。 – saille

答えて

0

アクションを意味する場合は、URLに追加するだけです。

0

POSTデータに任意のキー/値のペアを追加することができます。コントロール名、フォーム名、フォームアクション、ページのどこにもありません。

ちなみに、POSTデータを手動で作成する場合は、値をURLエンコードする必要があります。

string data = String.Format("{0}={1}&{2}={3}&{4}={5}&{6}={7}&{8}={9}&{10}={11}", 
       txtName.ClientID, HttpUtility.UrlEncode(txtName.Text), 
       ... 
+0

フォームの名前を掲示するためのキーは何ですか? –

+2

ブラウザでは普通にポスティングされていないので特別なキーはありません。あなたのサーバーは期待しています。 – EMP

0

あなたは異なる形で様々な活動を管理している場合、あなたはまた、あなたがやっている活動の種類とフォームの間、隠れ変数を送ることができるので、あなたは隠された隠された価値を評価することができ、かつた内容に応じて行動しますそれ。

また、送信ボタンに値と名前を入れてください。これはまた、apost変数としてスクリプトにも送られます。

関連する問題