0

php に組み込まれた「C」のオンライン コンパイラを見ました。fiddler 2 ツールを使用して、Web ブラウザがサーバーに投稿しているものを確認しています。サーバーに送信されるコンテンツは次のようになります。

ここに画像の説明を入力

上記のテキストを生成できるように、C#でWEBCLIENTまたはWEBREQUESTを使用してサーバーに何を投稿する必要があるか、誰でもわかりますか。上記の数値は、i POST のたびに異なります。助けてください。

4

1 に答える 1

0

Vogel612 が言ったように、数の変化は特徴です。

とにかく、WebClient を使用してサーバーに投稿するには、メソッドを呼び出して、イベントが発生UploadStringAsyncしたときにハンドラーを記述する必要があります。これは、 C コードをコンパイラ サービスにUploadStringCompleted送信する複数行を使用して作成した非常に高速な WinForms プログラムです。TextBox

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Web;

namespace WebClientPostForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            PostToServer();
        }

        public void PostToServer()
        {
            TxtOutput.Text += "Initialising... ";

            // string is formatted like this for readability
            string code = "int main()" +
            "{" +
                "printf(\"Hello World!\");" +
            "}";

            // the code is URL-encoded so that characters are escaped
            string data = string.Format("code={0}&lang=c&submit=Execute", HttpUtility.UrlEncode(code));

            WebClient client = new WebClient();

            // I couldn't get this to work unless I set the content type
            client.Headers["Content-Type"] = "application/x-www-form-urlencoded";

            client.UploadStringCompleted += (sender, e) => 
                {
                    TxtOutput.Text += string.Format("Request complete. Response: {0}", e.Result);
                };

            TxtOutput.Text += "Posting Data To Server... ";
            client.UploadStringAsync(new Uri("http://www.compileonline.com/compile.php"), data);
        }
    }
}
于 2013-03-06T22:08:03.390 に答える