Вверх ↑
Этот топик читают: Гость
Ответов: 4628
Рейтинг: 749
#166: 2019-07-03 14:16:04 ЛС | профиль | цитата
Обновлены компоненты

HTTPClient:
- возможность изменять свойство UserAgent в runtime
- добавлены события onAuthHTTP, onAuthProxy
- добавлено свойство Decompress
- изменен порядок свойств компонента в панели

CookieManager:
- исправлена ошибка в обработке куки с параметром "domain"
- добавлена обработка параметра "max-age" куки
- изменена строка куки в списке компонента - после Expired добавлен параметр Max-Age
- изменен формат файла хранения куки - используется символ табуляции (#9) в качестве разделителя параметров, сохраняется параметр куки Max-Age.

Редактировалось 1 раз(а), последний 2019-07-03 14:19:44
карма: 26

1
Голосовали:Konst
Ответов: 537
Рейтинг: 14
#167: 2019-09-10 07:42:31 ЛС | профиль | цитата
Как с помощью HTTPClient post запросом отправить вот такие данные {"filters":{"ageFrom":null,"ageTo":null,"countries":[],"withPhoto":false,"moreChildren":false},"limit":15,"page":2} браузер так отправляет, смотрел через Fiddler. Не получается отправить, код ошибки 12175

Вот так отправляет IE

POST https://api.prime.date/account/search HTTP/1.1
Content-Type: application/json
Accept: application/json
Referer: https://prime.date/search-users
Accept-Language: ru-RU
Origin: https://prime.date
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Host: api.prime.date
Content-Length: 115
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: тут куки

{"filters":{"ageFrom":null,"ageTo":null,"countries":[],"withPhoto":false,"moreChildren":false},"limit":15,"page":2}


Add(Button,3508721,119,364)
{
Left=165
Top=165
link(onClick,5636246:doEvent1,[])
}
Add(Clipboard,8089563,280,378)
{
}
Add(HTTPClient,7072785,224,371)
{
URL="https://api.prime.date/account/search"
Method=1
UserAgent="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
EncType=2
Point(Headers)
Point(PostData)
link(onFinish,8089563:doPutText,[])
link(Headers,12282822:Cookies,[])
link(PostData,3631094:Text,[(251,352)(279,352)])
}
Add(CookieManager,12282822,238,308)
{
Point(doGetIECookies)
link(URL,14011377:Text,[])
}
Add(Hub,5636246,175,364)
{
link(onEvent1,12282822:doGetIECookies,[(210,370)(210,342)])
link(onEvent2,7072785:doLoadString,[])
}
Add(VisualStrings,3631094,273,315)
{
Lines=#115:{"filters":{"ageFrom":null,"ageTo":null,"countries":[],"withPhoto":false,"moreChildren":false},"limit":15,"page":2}|
}
Add(VisualStrings,14011377,245,280)
{
Lines=#18:https://prime.date|
}

карма: 4

0
Ответов: 4628
Рейтинг: 749
#168: 2019-09-10 10:46:01 ЛС | профиль | цитата
В Headers добавь
Content-Type: application/json

CookieManager используется не так. Там же есть примеры.

Add(MainForm,2953706,21,105)
{
Position=1
}
Add(Button,3508721,245,287)
{
Left=10
Top=15
link(onClick,7072785:doLoadString,[])
}
Add(HTTPClient,7072785,322,287)
{
URL="https://api.prime.date/account/search"
Method=1
UserAgent="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
Headers="Content-Type: application/json"
EncType=2
CookieManager="Cookie"
Point(Headers)
Point(PostData)
link(onFinish,5962341:doText,[])
link(onError,13582493:doMessage,[(370,314)(370,328)])
link(PostData,3631094:Text,[])
AddHint(-129,48,160,13,Headers)
AddHint(-83,-33,48,13,CookieManager)
}
Add(CookieManager,12282822,126,105)
{
Name="Cookie"
AddHint(41,8,48,13,Name)
}
Add(VisualStrings,3631094,343,231)
{
Lines=#115:{"filters":{"ageFrom":null,"ageTo":null,"countries":[],"withPhoto":false,"moreChildren":false},"limit":15,"page":2}|
Width=375
Height=25
}
Add(Memo,5962341,399,273)
{
Left=10
Top=45
Width=370
Height=210
ScrollBars=2
}
Add(Message,13582493,385,322)
{
Caption="Error"
Icon=3
}
Но код ошибки все таки говорит что проблема на этапе установки соединения. Попробуй все параметры в SSLIgnore поставить True.
У себя не могу проверить - на Windows XP с этим сайтом не работает.
карма: 26

0
Ответов: 537
Рейтинг: 14
#169: 2019-09-10 11:28:55 ЛС | профиль | цитата
CookieManager я всегда так использовал как у меня и все хорошо работало, ваш пример лучше конечно, буду так делать.
Все равно ошибка 12175, буду через браузер делать.
Где можно узнать, что означают коды ошибок HTTPClient?

Редактировалось 1 раз(а), последний 2019-09-10 11:33:04
карма: 4

0
Ответов: 4628
Рейтинг: 749
#170: 2019-09-10 11:35:35 ЛС | профиль | цитата
https://docs.microsoft.com/en-us/windows/win32/wininet/wininet-errors
карма: 26

0
Ответов: 203
Рейтинг: 2
#171: 2019-09-12 19:34:33 ЛС | профиль | цитата
у меня тоже после последнего обновления проблема с такой же ошибкой... Дело в передаваемых параметрах
карма: 0

0
Ответов: 4628
Рейтинг: 749
#172: 2019-09-13 10:45:26 ЛС | профиль | цитата
kaban4ik, выложи свой неработающий запрос - URL, Headers, PostData.
А предыдущая версия компонента - не выдаёт ошибки и работает как надо именно с этим запросом?

Редактировалось 1 раз(а), последний 2019-09-13 11:22:50
карма: 26

0
Ответов: 4628
Рейтинг: 749
#173: 2019-09-23 11:26:32 ЛС | профиль | цитата
Обновлены компоненты

HTTPClient:
- добавлены свойства RespCharset, FieldCharset
- свойство URLCodePage больше не влияет на имя отправляемого файла
- скрыта точка ContentType, изменено порядок расположения некоторых свойств

CookieManager: поправка при работе с атрибутом Max-Age куки

Добавлена отдельная редакция компонентов для Unicode-пакета

Поскольку свойство RespCharset по-умолчанию стоит в Auto, то в существующих схемах стоящий на выходе компонент Charset для преобразования ответа из UTF-8 в ANSI следует убрать. Либо поставить RespCharset=ANSI, чтобы и дальше преобразовывать через Charset.

Редактировалось 1 раз(а), последний 2019-10-30 13:54:31
карма: 26

1
Голосовали:Konst
Ответов: 92
Рейтинг: 1
#174: 2019-09-23 15:24:05 ЛС | профиль | цитата
Netspirit, Жаль не могу поставить жирный + СПАСИБО!
Почему то не хочет работать на Unicode-пакете у меня. Старые компоненты удалил, новые установил. При компиляции никаких ошибок не выскакивает. Просто "зависают" программы и ничего не происходит.
карма: 0

0
Ответов: 4628
Рейтинг: 749
#175: 2019-09-23 15:45:39 ЛС | профиль | цитата
Откомпилируй примеры в Unicode и проверь.
В своих программах событие onError происходит?

Редактировалось 1 раз(а), последний 2019-09-23 15:48:28
карма: 26

0
Ответов: 92
Рейтинг: 1
#176: 2019-09-23 15:58:01 ЛС | профиль | цитата
Netspirit писал(а):
В своих программах событие onError происходит?

Компилирую FPC-32U. Если беру только один HTTP компонент с кнопкой, то зависает и ничего не происходит.
карма: 0

0
Ответов: 4628
Рейтинг: 749
#177: 2019-09-23 16:00:59 ЛС | профиль | цитата
На любом URL?
карма: 26

0
Ответов: 92
Рейтинг: 1
#178: 2019-09-23 16:05:20 ЛС | профиль | цитата
Netspirit писал(а):
На любом URL?

Да. Сейчас все снесу, и установлю заново.

UPD На компьютере так и не удалось запустить, к сожалению. Hiasm 4.05 сборка 186.
Поставил на ноутбук, все заработало сборка Hiasm та же.
Netspirit, Еще раз огромное Спасибо!

Редактировалось 1 раз(а), последний 2019-09-23 17:33:28
карма: 0

0
Ответов: 537
Рейтинг: 14
#179: 2019-09-23 18:09:50 ЛС | профиль | цитата
Почему куки не на всех сайтах работают?

Add(MainForm,2024491,168,175)
{
WindowsState=2
}
Add(WebBrowser,1657529,294,245)
{
Left=95
Top=160
Align=5
URL=""
Silent=0
Point(doFromText)
}
Add(Button,105349,168,266)
{
Left=5
Caption="Get"
link(onClick,11977870:doLoadString,[])
}
Add(HTTPClient,11977870,231,266)
{
UserAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0"
RespCharset=2
CookieManager="cook"
Point(Headers)
link(URL,9538349:Text,[])
link(onFinish,1657529:doFromText,[])
}
Add(CookieManager,7737238,231,175)
{
Name="cook"
}
Add(VisualStrings,9538349,231,231)
{
Lines=#25:https://www.facebook.com/|
}
У меня есть модифицированный компонент HTTP_Get с точкой Headers, если на эту точку при запросе добавить куки, то ответ с сайта приходит уже с авторизацией, а в этой схеме нет и так и так, уже все перепробовал, игнорирует куки при запросе на сайт facebook компонент HTTPClient
карма: 4

0
Ответов: 4628
Рейтинг: 749
#180: 2019-09-24 11:03:35 ЛС | профиль | цитата
Проверил в стандартном примере. Поставил дебаг в коде в месте, где куки получаются из менеджера и добавляются в заголовки запроса:

Куки корректно принимаются менеджером и так же отдаются клиенту и в запрос. Может у тебя в схеме что-то неправильно происходит (между получением куки во время авторизации и добавлением в последующие запросы)?
Sersey писал(а):
HTTP_Get с точкой Headers, если на эту точку при запросе добавить куки
А если в HTTPClient таким же образом добавить куки в Headers (при отключенном CookieManager, так как могут перекрываться)?

Редактировалось 1 раз(а), последний 2019-09-24 11:24:53
карма: 26

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)