Нужна инструкция по созданию запроса на публикацию и получению значенияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Нужна инструкция по созданию запроса на публикацию и получению значения

Сообщение Anonymous »

Я пытаюсь создать веб-сервис, из которого мне нужно сканировать данные. Проблема в том, что сайт, с которого мне нужно получить данные, находится в виде сетки asp, в которой есть пейджинг. Итак, мне нужно, чтобы прочитать html, выполнить обратную передачу на страницу - и это даст мне следующую страницу GridView, а затем получить новый HTML-код (ответ), от которого я могу проанализировать и получить нужные мне данные...

Я попробовал много способов решить эту проблему, но мне не удалось. Не могли бы вы сказать мне, где/что я делаю не так?

Код:

Код: Выделить всё

[WebMethod]
public string eNabavki2()
{
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
string htmlCode = client.DownloadString("https://site.com/Default.aspx");
string vsk = getBetween(htmlCode, "id=\"__VIEWSTATEKEY\" value=\"", "\" />");

WebRequest request = WebRequest.Create("https://site.com/Default.aspx");

request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";

var webRequest = (HttpWebRequest)request;
webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0"; //Googlebot/2.1 (+http://www.googlebot.com/bot.html)
//set form data
string postData = string.Format("__EVENTTARGET={0}" +
"&__EVENTARGUMENT={1}" +
"&__LASTFOCUS={2}"+
"&__VIEWSTATEKEY={3}"+
"&__VIEWSTATE={4}"+
"&__SCROLLPOSITIONX={5}"+
"&__SCROLLPOSITIONY={6}"+
"&ctl00$ctl00$cphGlobal$cphPublicAccess$publicCFTenders$dgPublicCallForTender$ctl13$ddlPageSelector={7}",
System.Web.HttpUtility.UrlEncode("ctl00$ctl00$cphGlobal$cphPublicAccess$publicCFTenders$dgPublicCallForTender$ctl13$ddlPageSelector"),
/*1*/string.Empty,
/*2*/string.Empty,
/*3*/string.Empty,//vsk
/*4*/string.Empty,
/*5*/"0",
/*6*/"383",
/*7*/"2");
byte[] byteArray = Encoding.UTF8.GetBytes(postData);

//send the form data to the request stream
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();

var response = request.GetResponse();

// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream();

StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();

// Clean up the streams.
reader.Close();
dataStream.Close();
response.Close();

return responseFromServer;
}
Хорошо, так мало вещей, в строку postData я включил все, что смог найти на отправляемой странице. Для этого я использовал fidler и все (26) аргументов, которые он мне дал. Мне действительно нужен pageSelector (чтобы изменить его значение)

Также я заметил, что в html-коде есть __VIEWSTATEKEY, который каждый раз получает другое значение. Вы можете видеть, что сначала я попытался получить это значение из html (строка vsk), но это ничего не изменило.

Извините, но это не так. знаком с этим сообщением/запросом. Но мне это нужно для проекта для университета, поэтому, пожалуйста, если кто-нибудь может помочь мне решить эту проблему....

Редактировать:
Вот prt scr о том, что Fidler дает мне для заголовков:
Изображение
< /п>

Подробнее здесь: https://stackoverflow.com/questions/177 ... ck-a-value
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»