|
Непонятный ответ от сервера при Post-запросе | ☑ | ||
---|---|---|---|---|
0
Dendroid92
24.02.16
✎
22:58
|
Как написать на 1С аналогичный запрос кнопки "Поиск" на сайте elibrary.ru/authors.asp ?
В 1С пишу такой код для отправки запроса: Сервер = "elibrary.ru"; Ресурс = "/authors.asp"; HTTP = Новый HTTPСоединение(Сервер); ФайлЗапроса = ПолучитьИмяВременногоФайла(); ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.УстановитьТекст("authors_all=&pagenum=&authorbox_name=&selid=&orgid=&orgadminid=&surname=&codetype=SPIN&codevalue=&town=&countryid=&orgname=&rubriccode=&sortorder=0&order=0"); ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.ANSI); ФайлРезультата = ПолучитьИмяВременногоФайла(); ФайлОтправки = Новый Файл(ФайлЗапроса); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); ЗаголовокHTTP.Вставить("Accept-Encoding", "gzip, deflate"); ЗаголовокHTTP.Вставить("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"); ЗаголовокHTTP.Вставить("Cache-Control", "max-age=0"); ЗаголовокHTTP.Вставить("Connection", "keep-alive"); ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded"); ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки); ЗаголовокHTTP.Вставить("Host", "elibrary.ru"); ЗаголовокHTTP.Вставить("Origin", "http://elibrary.ru"); ЗаголовокHTTP.Вставить("Referer", "http://elibrary.ru/authors.asp"); ЗаголовокHTTP.Вставить("Upgrade-Insecure-Requests", "1"); HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP); Ответ = Новый ТекстовыйДокумент(); Ответ.Прочитать(ФайлРезультата, КодировкаТекста.UTF8); ТекстОтвета = Ответ.ПолучитьТекст(); УдалитьФайлы(ФайлЗапроса); УдалитьФайлы(ФайлРезультата); в ответ получаю html: <head><title>Object moved</title></head> <body><h1>Object Moved</h1>This object may be found <a HREF="/start_session.asp?rpage=http%3A%2F%2Felibrary%2Eru%2Fauthors%2Easp%3Ftown%3D%26authors%5Fall%3D%26pagenum%3D%26authorbox%5Fname%3D%26selid%3D%26orgname%3D%26orgid%3D%26orgadminid%3D%26countryid%3D%26surname%3D%26codevalue%3D%26order%3D0%26codetype%3DSPIN%26rubriccode%3D%26sortorder%3D0">here</a>.</body> |
|||
1
Записьдампа
24.02.16
✎
23:18
|
HTTP код результата какой?
|
|||
2
Dendroid92
24.02.16
✎
23:21
|
(1) а как его посмотреть можно?
|
|||
3
Записьдампа
24.02.16
✎
23:28
|
HTTP.ОтправитьДляОбработки - это наверно функция?
|
|||
4
Dendroid92
24.02.16
✎
23:35
|
(3) Да, но если написать Ответ = HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP); то возвращается ТекстовыДокумент, в котором толком ничего нет. Или я что-то не так понял?
|
|||
5
Записьдампа
24.02.16
✎
23:36
|
(4) СП что по этому поводу говорит?
|
|||
6
Dendroid92
24.02.16
✎
23:41
|
(5) Спасибо, дошло как посмотреть. Пишет 302 код. Не пойму почему
|
|||
7
Записьдампа
24.02.16
✎
23:43
|
Это правильно. А что делает уважающий себя браузер, когда получает такой ответ? =)
|
|||
8
Dendroid92
24.02.16
✎
23:46
|
(7) По идее перенаправляет на другую ссылку?
|
|||
9
Записьдампа
24.02.16
✎
23:48
|
(8) Пральна. Смотрит в заголовок location ответа. И так пока не дойдет или не зациклицо или не надоест.
|
|||
10
Записьдампа
24.02.16
✎
23:52
|
Но судя по тексту хтмл он пытается тебя загнать на авторизацию для начала сессии, так что там еще за куками смотреть надо
|
|||
11
Serginio1
24.02.16
✎
23:52
|
||||
12
Записьдампа
24.02.16
✎
23:53
|
Скорей всего для того, чтобы результаты поиска тебе по частям показывать
|
|||
13
Dendroid92
24.02.16
✎
23:56
|
(12) там походу надо поменять Ресурс = "/authors.asp"; на Ресурс = "/start_session.asp" и дальше прикручивать параметр rpage=elibrary.ru/authors.asp
|
|||
14
Dendroid92
25.02.16
✎
00:13
|
(10) похоже ты прав, отправил запрос по той ссылке, которую он присылал, теперь ведет меня на http://elibrary.ru/page_error.asp, открыл в браузере и понял, что надо авторизовываться, а потом делать поиск или же куки передавать сразу. Огромное спасибо, за помощь.
|
|||
15
Записьдампа
25.02.16
✎
00:14
|
(13) Нет. Параметр rpage говорит куда надо вернутся после успешного начала сессии.
Возьми уже фиддлер, прощелкай руками весь цикл от открытия браузера, чтобы в новую сессию попасть, и не парься догадками |
|||
16
Dendroid92
25.02.16
✎
00:28
|
(15) Проставил куки и все нормально пришло. Тобишь надо авторизовываться, а уже потом делать поиск, либо же сразу кидать куки в запрос. Спасибо огромное, ты меня выручил.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |