2016-07-14 11 views
0

Я уже успешно зарегистрировал и опубликовал данные и загрузил данные с 2-х сайтов с помощью idHttp.post(), но у меня возникли проблемы с третьим один
на этом новом сайте, логин действительно работает, но когда я пытаюсь загрузить файл (который использует __doPostBack для ссылки для загрузки), я переадресовываюсь на страницу с ошибкой.
У меня есть двойная и тройная проверенные все данные, и они точно так же, как показал мне http-анализатор , единственное отличие, которое я заметил, это то, что в моих других попытках и сайтах, к которым я обращался успешно, __ viewstate одинаково каждый раз, и он никогда не изменяется, но на этом третьем сайте он изменяется при каждом входе (я имею в виду, когда я иду в сайт вручную, и я проверяю результаты http-анализатора, я вижу, что значение параметра __viewstate каждый раз различается)
что мне делать? это проблема с изменением параметра __viewstate? если да, то как я могу это исправить?
код я использую для размещения:IdHttp: перенаправление на страницу с ошибкой при попытке загрузить файл, __viewstate меняется каждый раз

try 
Response := TMemoryStream.Create; 
try 
    Request := TStringList.Create; 
    try 
    Request.Assign(TATDFileUtility.convertPairValueToRequestList(TATDFileUtility.extractPairValue('the site login parameters.txt', 3))); 
    IdHTTP := TIdHTTP.Create; 
    try 
     IdHTTP.AllowCookies := True; 
     IdHTTP.HandleRedirects := True; 
     IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded'; 

     IdHTTP.Post('thesite, the address for the login and main page and download page is the same', Request, Response); 
     Response.SaveToFile('responseCode0.txt'); 

     Request.Clear; 
     Response.Clear; 
     Request.Assign(TATDFileUtility.convertPairValueToRequestList(TATDFileUtility.extractPairValue('httpDownloadParamters.txt', 3))); 
     IdHTTP.Post('thesite, the address for the login and main page and download page is the same', Request, Response); 
     Response.SaveToFile('responseCode1.txt'); 

, как вы можете увидеть после проверки repsonsecode0, я могу видеть, что я вошел в систему, но второй код ответа показывает мне ошибку и отслеживания его показывает, что я перенаправление на страницу с ошибкой.

+1

Что вы ожидаете? Мы не знаем, на каком сайте, мы не видим никакого кода, мы можем только догадываться. Вы лжете, что вы отправляете точно то же самое - вы этого не делаете. Сначала вы должны получить доступ к сайту входа, чтобы получить правильное значение __viewstate. Затем войдите в систему с этим значением, а затем снова проверьте, изменилось ли значение и использовалось новое. Его легко исправить - просто отправьте правильное значение. – smooty86

+0

@ smooty86, по соображениям конфиденциальности, я не могу предоставить адрес сайта, но код такой, как вы видите выше. –

+0

@ smooty86, если мне нужно динамически получить __viewstate, как я могу это сделать? Как я могу получить текущее значение __viewstate, чтобы я мог передать его моей программе?, Thx –

ответ

1

ViewState является динамичным. Сначала необходимо создать <form> элемент HTML, который обычно отправляет PostBack в браузере. Это позволяет веб-серверу генерировать текущую ViewState. Затем проанализируйте HTML, чтобы извлечь имена и значения элементов <input> в пределах <form>, включая ViewState, а затем вы можете POST те значения, которые указаны в URL-адресе, указанном в атрибуте action. Это то, что обычно делает веб-браузер, и то, что вам нужно для моделирования с помощью TIdHTTP.

+0

спасибо, действительно, viewstate и другие параметры существуют после того, как я использую GET, плохо пытаюсь использовать динамическое viewstate и плохо делить результат, на данный момент один вопрос, имеет ли порядок параметров внутри списка запросов, я имею в виду Например, нормально ли для viewstate быть последним параметром? –

+0

Заказ может быть или не иметь значения, в зависимости от реализации сервера. Спецификация HTML указывает, что значения '' должны быть представлены в том порядке, в котором они объявлены в HTML. –

+0

после регистрации, я использовал GET и проанализировал его с помощью TRegEx и добавил __ViewState и __eventValidation, и больше не было страницы с ошибкой! и он исправил это! НО, хотя я не был перенаправлен на страницу ошибки, возвращаемый кодом ответа последним POST, не содержит файл!и его html-код очень похож на предыдущие шаги, я должен отметить, что моя страница входа, главная страница и страница загрузки - это тот же адрес –