Сведения о вопросе

Kimsanov

21:06, 1st October, 2020

Теги

c#   asp.net    

Как вы программно заполняете форму и 'POST' веб-страницу?

Просмотров: 342   Ответов: 6

Используя C# и ASP.NET, я хочу программно заполнить некоторые значения (4 текстовых поля) на веб-странице (форма), а затем 'POST' эти значения. Как мне это сделать?

Edit: уточнение: есть сервис (www.stopforumspam.com), где вы можете отправить ip, имя пользователя и адрес email на их странице 'add'. Я хочу иметь возможность создать ссылку/кнопку на странице моего сайта, которая заполнит эти значения и отправит информацию без необходимости копировать/вставлять их и нажимать кнопку Отправить.

Дополнительные разъяснения: как автоматизированные спам-боты заполняют формы и нажимают кнопку Отправить, если они были написаны в C#?



  Сведения об ответе

P_S_S

21:06, 1st October, 2020

Вы можете посмотреть пример этого здесь: http://en.csharp-online.net/HTTP_Post

В принципе, код будет выглядеть примерно так:

WebRequest req = WebRequest.Create("http://mysite/myform.aspx");
string postData = "item1=11111&item2=22222&Item3=33333";

byte[] send = Encoding.Default.GetBytes(postData);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = send.Length;

Stream sout = req.GetRequestStream();
sout.Write(send, 0, send.Length);
sout.Flush();
sout.Close();

WebResponse res = req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string returnvalue = sr.ReadToEnd();


  Сведения об ответе

JUST___

07:04, 6th August, 2020

Вы можете использовать метод UploadValues на WebClient - все, что для этого требуется, это передача a URL и A NameValueCollection. Это самый простой подход, который я нашел, и в документации MS есть хороший пример:
http://msdn.microsoft.com/en-us/library/9w7b4fz7.aspx

Вот простая версия с некоторой обработкой ошибок:

var webClient = new WebClient();
Debug.Info("PostingForm: " + url);
try
{
     byte [] responseArray = webClient.UploadValues(url, nameValueCollection);
     return new Response(responseArray, (int) HttpStatusCode.OK);
}
catch (WebException e)
{
     var response = (HttpWebResponse)e.Response;
     byte[] responseBytes = IOUtil.StreamToBytes(response.GetResponseStream());
     return new Response(responseBytes, (int) response.StatusCode);
}  

Класс ответа - это простая оболочка для тела ответа и кода состояния.


  Сведения об ответе

darknet

21:06, 1st October, 2020

Просмотрите источник страницы и используйте класс WebRequest для выполнения разноски. Нет необходимости ехать IE. Просто выясните, что IE отправляет на сервер и реплицируйте это. Использование такого инструмента, как Fiddler, сделает его еще проще.


  Сведения об ответе

ЯЯ__4

17:09, 6th August, 2020

У меня была ситуация, когда мне нужно было разместить свободный текст из html textarea программно, и у меня были проблемы, когда я получал <br /> в моем списке param, который я строил.

Мое решение было заменить теги с символами новой строки и htmlencoding просто, чтобы быть безопасным.

Regex.Replace( HttpUtility.HtmlDecode( test ), "(<br.*?>)", "\r\n" ,RegexOptions.IgnoreCase);


  Сведения об ответе

#hash

16:53, 6th August, 2020

Где вы кодируете строку:

Encoding.Default.GetBytes(postData);

Использовать Ascii вместо API-интерфейсы Google:

Encoding.ASCII.GetBytes(postData);

это делает ваш запрос таким же, как и эквивалентный "curl --data "..." [url]" запрос


  Сведения об ответе

ASSembler

09:00, 16th August, 2020

вы можете отправить запрос post / get многими способами. Различные типы библиотек есть, чтобы помочь. Я обнаружил, что это сбивает с толку , чтобы выбрать, какой из них я должен использовать и каковы различия между ними.

После серфинга Stack overflow это лучший ответ, который я нашел . этот поток объясняет все

https://stackoverflow.com/a/4015346/1999720


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться