Как отправить форму http с помощью C#

У меня есть простой файл HTML такой как

<form action="http://www.someurl.com/page.php" method="POST">
   <input type="text" name="test"><br/>
   <input type="submit" name="submit">
</form>

Править: Я не мог быть достаточно ясным с вопросом

Я хочу написать код C#, который отправляет эту форму тем же самым способом, который произошел бы, имел, я вставил вышеупомянутый HTML в файл, открыл его с IE и отправил его с браузером.

30
задан Community 4 August 2019 в 04:08
поделиться

2 ответа

Ваш HTML-файл не будет взаимодействовать с C # напрямую, но вы можете написать немного C #, чтобы он вел себя так, как если бы это был HTML-файл.

Например: существует класс System.Net.WebClient с простыми методами:

using System.Net;
using System.Collections.Specialized;

...
using(WebClient client = new WebClient()) {

    NameValueCollection vals = new NameValueCollection();
    vals.Add("test", "test string");
    client.UploadValues("http://www.someurl.com/page.php", vals);
}

Дополнительную документацию и функции см. На странице MSDN.

12
ответ дан Jeff Meatball Yang 27 November 2019 в 23:55
поделиться

У меня была похожая проблема в MVC (которая привела меня к этой проблеме).

Я получаю FORM в виде строкового ответа от запроса WebClient.UploadValues ​​(), который я затем должен отправить - поэтому я не могу использовать второй WebClient или HttpWebRequest. Этот запрос вернул строку.

using (WebClient client = new WebClient())
  {
    byte[] response = client.UploadValues(urlToCall, "POST", new NameValueCollection()
    {
        { "test", "value123" }
    });

    result = System.Text.Encoding.UTF8.GetString(response);
  }

Мое решение, которое можно использовать для решения OP, состоит в том, чтобы добавить Javascript auto submit в конец кода, а затем с помощью @ Html.Raw () отобразить его на странице Razor. 115]

result += "<script>self.document.forms[0].submit()</script>";
someModel.rawHTML = result;
return View(someModel);

Razor Code:

@model SomeModel

@{
    Layout = null;
}

@Html.Raw(@Model.rawHTML)

Надеюсь, это поможет любому, кто окажется в такой же ситуации.

1
ответ дан kangacHASHam 27 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: