0

我看到了一个内置 php 的“C”在线编译器。我正在使用 fiddler 2 工具来查看我的网络浏览器发布到服务器的内容。发送到服务器的内容如下所示:

在此处输入图像描述

任何人都可以告诉我,我应该在 C# 中使用 WEBCLIENT 或 WEBREQUEST 将什么发布到服务器,以便我可以生成上述文本。上面写的数字每次我发​​布时都会有所不同。请帮忙。

4

1 回答 1

0

正如 Vogel612 所说,数字变化是一个特征。

无论如何,要使用 WebClient 发布到服务器,您需要在引发事件UploadStringAsync时调用该方法并编写一个处理程序。UploadStringCompleted这是我使用多行创建的一个非常快速的 WinForms 程序,TextBox它将 C 代码发布到编译器服务。

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 回答