WebBrowser заполнение формы содержащей Ajax - C#
Формулировка задачи:
Добрый день!
Не уверен в той ветке пишу или нет поэтому не серчайте. Проблема следцющая, я хочу написать програмку которая будет размещать товар в прайсе на сайте Сландо(slando.ua) и все бы зорошо но не тем есть выбор категории, который использует ajax, и после выбора категории он выводит форму для стоимости либо еще добавляет форму типа "Имя поизводителя". Подскажите как можно побороть это?
Я пробовал 2-мя способами:
Что не сработало, и не удивительно, названия елеметноя я при помощи оперы узнал, но они скорее всего формируются только после выбора категории... 8(
Вторым способом я просто пытался отправить пост запрос ...
... на что у меня тоже ничего не вышло, Fiddler вернул 404 ошибку, не пойму в чем может быть проблема 8(
Под спойлером спрятаны шапки пост запросов:
_WebBrowser.Document.GetElementById("category-container").SetAttribute("value", "64"); foreach (HtmlElement tag in _WebBrowser.Document.GetElementsByTagName("input")) { var price = tag.GetAttribute("name"); if (price == "data[param_price][1]") { tag.SetAttribute("value", "120"); } } _WebBrowser.Document.GetElementById("id_private_business").SetAttribute("value", "private");
string postData = "-----------------------------7dd48c506be" + Environment.NewLine + "Content-Disposition: form-data; name=\"data[title]\"" + Environment.NewLine + "Hello world" + Environment.NewLine + "-----------------------------7dd48c506be" + Environment.NewLine + "Content-Disposition: form-data; name=\"data[category_id]\"" + Environment.NewLine + "78" + Environment.NewLine + "-----------------------------7dd48c506be" + Environment.NewLine + "Content-Disposition: form-data; name=\"data[offer_seek]\"" + Environment.NewLine + "-----------------------------7dd48c506be" + Environment.NewLine + "Content-Disposition: form-data; name=\"data[param_price][0]\"" + Environment.NewLine + "price" + Environment.NewLine + "-----------------------------7dd48c506be" + Environment.NewLine + "Content-Disposition: form-data; name=\"data[param_price][1]" + Environment.NewLine + "34234" + Environment.NewLine + ... byte[] Bytes = Encoding.UTF8.GetBytes(postData); string AdditionalHeaders = "Content-Type: multipart/form-data; boundary=---------------------------7dd48c506be" + Environment.NewLine; _WebBrowser.Navigate("http://slando.ua/post-new-ad", "", Bytes, AdditionalHeaders);
Запрос который создается в ручную в браузере:
Запрос отсылаемый программой:
POST http://slando.ua/post-new-ad/ HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://slando.ua/post-new-ad/
Accept-Language: en-US,en;q=0.8,ru;q=0.5,uk;q=0.3
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Content-Type: multipart/form-data; boundary=---------------------------7ddec1542079a
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Content-Length: 3734
DNT: 1
Host: slando.ua
Pragma: no-cache
Cookie: __utma=143612394.498095220.1359299073.1359299073.1359299073.1; __utmz=143612394.1359299073.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=143612394.31.9.1359301041153; PHPSESSID=lllqd08qi4jchgjlnudamaehk3; __utmc=143612394
-----------------------------7ddec1542079a
Content-Disposition: form-data; name="data[title]"
Шапка
-----------------------------7ddec1542079a
Content-Disposition: form-data; name="data[category_id]"
85
-----------------------------7ddec1542079a
Content-Disposition: form-data; name="data[offer_seek]"
-----------------------------7ddec1542079a
Content-Disposition: form-data; name="data[param_price][0]"
price
-----------------------------7ddec1542079a
Content-Disposition: form-data; name="data[param_price][1]"
879
-----------------------------7ddec1542079a
Content-Disposition: form-data; name="data[param_price][currency]"
UAH
-----------------------------7ddec1542079a
Content-Disposition: form-data; name="data[param_currency]"
UAH
-----------------------------7ddec1542079a
Content-Disposition: form-data; name="data[param_mobile_phone_manufacturer]"
2064
-----------------------------7ddec1542079a
Content-Disposition: form-data; name="data[private_business]"
private
...
POST http://slando.ua/post-new-ad/ HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: en-US,en;q=0.8,ru;q=0.5,uk;q=0.3
Content-Type: multipart/form-data; boundary=---------------------------7dd48c506be
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; Media Center PC 6.0; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729)
Connection: Keep-Alive
Content-Length: 3864
Host: slando.ua
Pragma: no-cache
Cookie: __utma=143612394.221689840.1358954510.1359297575.1359301257.7; __utmb=143612394.5.10.1359301257; __utmz=143612394.1358954510.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); remember_me=547ed832Eq9k0rjjJUs%3D; PHPSESSID=7aooasl0mu08qjahfc3uf0g000; __utmc=143612394
-----------------------------7dd48c506be
Content-Disposition: form-data; name="data[title]"
Hello world
-----------------------------7dd48c506be
Content-Disposition: form-data; name="data[category_id]"
78
-----------------------------7dd48c506be
Content-Disposition: form-data; name="data[offer_seek]"
-----------------------------7dd48c506be
Content-Disposition: form-data; name="data[param_price][0]"
price
...
Решение задачи: «WebBrowser заполнение формы содержащей Ajax»
textual
Листинг программы
string str = "<div class=\"fblock clr\" id=\"parameter-div-price\"><div class=\"fleft label tright\">" + "<label class=\"fbold c000\" for=\"parameter-price\">Цена<span class=\"cc914\">*</span></label>" + "</div><div class=\"area clr\">" + "<div class=\"fleft rel focusbox\">" + ... "</div></div></div></div>"; _WebBrowser.Document.GetElementById("choose-category-button").InnerHtml = str;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д