POST на веб-страницу из приложения C # - PullRequest
1 голос
/ 17 мая 2010

Я искал / спрашивал вокруг и не могу понять это. У меня есть приложение на C #, и мне нужно иметь возможность собрать некоторые данные в приложении, открыть веб-браузер и отправить в него некоторые данные.

Я могу POST на сайт из приложения, и я могу открыть IE по определенной ссылке, но я не могу сделать и то, и другое. Я не могу отправить эту ссылку напрямую. Есть идеи, как этого добиться?

    private void btnSubmit_Click(object sender, EventArgs e)
    {
        ASCIIEncoding encoding = new ASCIIEncoding();
        string postData = "Fullname=Test";
        byte[] data = encoding.GetBytes(postData);

        // Prepare web request...
        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.url.com/Default.aspx");
        myRequest.Method = "POST";
        myRequest.ContentType = "application/x-www-form-urlencoded";
        myRequest.ContentLength = data.Length;

        Stream newStream = myRequest.GetRequestStream();

        // Send the data.
        newStream.Write(data, 0, data.Length);
        System.Diagnostics.Process.Start(myRequest.Address.ToString()); //open browser
        newStream.Close();
    }

Любое понимание будет с благодарностью.

Спасибо

Ответы [ 2 ]

3 голосов
/ 17 мая 2010

Если это приложение WinForms, вы можете использовать элемент управления WebBrowser для размещения экземпляра Internet Explorer внутри приложения, а не для запуска нового процесса. Преимущество этого состоит в том, что вы имеете полный контроль над ним, и среди прочего вы можете POST к данному URL:

private void btnSubmit_Click(object sender, EventArgs e)
{
    var postData = Encoding.Default.GetBytes("Fullname=Test");
    webBrowser1.Navigate(
        "http://www.url.com/Default.aspx", 
        null, 
        postData, 
        "Content-Type: application/x-www-form-urlencoded" + Environment.NewLine
    );
}
0 голосов
/ 17 мая 2010

Вы можете установить свойство PostBackUrl в кнопке (или LinkButton или ImageButton)

Однако, это будет делать стандартная запись ASP.NET (с ViewState и т. Д.)

В зависимости от того, что вы хотите сделать, вы также можете создать отдельный объект, который не имеет runat = "server", а затем вы можете установить свойство action формы для вашей страницы.

Редактировать: Не берите в голову, если у вас есть приложение для Windows (не веб-приложение), это не будет работать. По крайней мере, не напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...