1

私は基本的に HttpWebRequests の使い方をある程度知っていますが、かなり初心者です。そこで、Post メソッドで次のトークンを送信したいと思います。

authenticity_token=pkhn7pwt3QATOpOAfBERZ%2BRIJ7oBEqGFpnF0Ir4RtJg%3D&question%5Bquestion_text%5D=TEST+TEST+TEST&authenticity_token=pkhn7pwt3QATOpOAfBERZ%2BRIJ7oBEqGFpnF0Ir4RtJg%3D

ボタンをクリックして「TEST TEST TEST」というテキストを送信します。これは、必要なボタンをクリックしたときに firebug から取得するトークンです。

4

2 に答える 2

1

さらに別の解決策:

// you can get the correct encoding from your site's response headers
Encoding encoding = Encoding.UTF8;
string targetUrl = "http://example.com";
var request = (HttpWebRequest)WebRequest.Create(targetUrl);

var formData = new Dictionary<string, object>();
formData["authenticity_token"] = "pkhn7pwt3QATOpOAfBERZ+RIJ7oBEqGFpnF0Ir4RtJg=";
formData["question[question_text]"] = "TEST TEST TEST";

bool isFirstField = true;
StringBuilder query = new StringBuilder();
foreach (KeyValuePair<string, object> field in formData)
{
    if (!isFirstField)
        query.Append("&");
    else
        isFirstField= false;

    query.AppendFormat("{0}={1}", field.Key, field.Value);
}

string urlEncodedQuery = Uri.EscapeDataString(query.ToString());
byte[] postData = encoding.GetBytes(urlEncodedQuery);

request.ContentLength = postData.Length;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";  

using (BinaryWriter bw = new BinaryWriter(request.GetRequestStream()))
    bw.Write(postData);

var response = request.GetResponse() as HttpWebResponse;
// TODO: process response
于 2012-10-19T11:48:19.413 に答える
1

Http Post Request でデータを送信するには、次のコードを使用してみてください。

サーバーの応答については、「var serverResponse」を確認してください。

        string targetUrl = "http://www.url.url";

        var postBytes = Encoding.Default.GetBytes(@"authenticity_token=pkhn7pwt3QATOpOAfBERZ%2BRIJ7oBEqGFpnF0Ir4RtJg%3D&question%5Bquestion_text%5D=TEST+TEST+TEST&authenticity_token=pkhn7pwt3QATOpOAfBERZ%2BRIJ7oBEqGFpnF0Ir4RtJg%3D");

        var httpRequest = (HttpWebRequest)WebRequest.Create(targetUrl);

        httpRequest.ContentLength = postBytes.Length;
        httpRequest.Method = "POST";

        using (var requestStream = httpRequest.GetRequestStream())
            requestStream.Write(postBytes, 0, postBytes.Length);

        var httpResponse = httpRequest.GetResponse();

        using (var responseStream = httpResponse.GetResponseStream())
            if (responseStream != null)
                using (var responseStreamReader = new StreamReader(responseStream))
                {
                    var serverResponse = responseStreamReader.ReadToEnd();
                }
于 2012-10-19T11:19:33.543 に答える