On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение





ссылка на сообщение  Отправлено: 16.09.19 23:34. Заголовок: SIMPL# HttpClient


А кто-нибудь имел дело с HttpClient (HttpsClient) на SIMPL#?
Написал простейший класс для отправки запросов, вот такой:
public class HTTPClient 
{

private HttpClient client1;
private HttpsClient client2;

public HTTPClient()
{
client1 = new HttpClient();
client2 = new HttpsClient();
client2.Verbose = true;
client2.HostVerification = false;
client2.PeerVerification = false;
}

public string Get(string Url)
{
if (Url.StartsWith("https://"))
{
var response = client2.Get(Url);

return response.Substring(0, 100);
}
else if (Url.StartsWith("http://"))
{
var response = client1.Get(Url);

return response.Substring(0, 100);
}
else return "Unknown Protocol in URL";
}
}

В итоге оно почти работает, но:
Большинство запросов по адресам http://, которые обрабатываются через HttpClient, вызывают исключение с ошибкой "No such host is known".
Пробовал разные - в зоне ru, в зоне com. С www и без. С префиксом http:// и без него.
Нормально сработал только один - http://google.com. Все остальные с ошибкой.

Однако, эти же сайты, если поменять http на https, прекрасно резолвятся классом HttpsClient и выдают какой-нибудь ответ.

Излишним будет говорить, что ДНС в процессоре настроен и если сделать ping этих сайтов в консоли процессора - они все резолвятся и пингуются.
Получается, что какой-то странный косяк исключительно в HttpClient....

П.С.
пробовал переписать простой вызов client.Get() на вот такой:
var request = new HttpClientRequest(); 
request.Url.Parse(Url);
var response = client1.Dispatch(request);

Все то же самое.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 10 [только новые]







ссылка на сообщение  Отправлено: 18.09.19 07:01. Заголовок: HttpClient и HttpsCl..


HttpClient и HttpsClient это две абсолютно разные имлементации, но с похожим API (потому, что сначала был http, а потом понадобился https :))

Я, как бы, не удивлен, что http лажает, ибо он давно уже никому особо не интересен как небезопасный, но починить надо конечно...
Тот факт, что https работает нормально, говорит о том, что в вашей системе с DSN все хорошо, а откуда http "знает" о google и почему только о нем - вопрос интересный! )) Надо будет завтра самому попробовать... Отпишусь!

По коду, второй вариант ничем не отличается от первого, т.к. внутри HttpClient делает по-сути то же самое.

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 18.09.19 18:40. Заголовок: Однако пока не удало..


Однако пока не удалось ничего воспроизвести из написанного.
Все сайты, что я пробовал, разрешаются замечательно, так же как и google.com

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 19.09.19 22:43. Заголовок: Чудеса. Может у меня..


Чудеса. Может у меня что-то с прошивкой. или версией SIMPL#...
Однако, на сайте одна и та же версия лежит уже давно.
Проверю еще на другом процессоре.

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 20.09.19 07:37. Заголовок: Ну, кстати, я не из ..


Ну, кстати, я не из S# проверял, а напрямую из C#.
Однако не вижу как это могло повлиять...
Какие у вас версии фирмвари и include4 кстати?

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 21.09.19 17:20. Заголовок: Коллеги, кому не лен..


Коллеги, кому не лень, проведите тест у себя.
Прикладываю тестовую программу, которую можно залить в процессор.
Там все исходники, включая исходник SIMPL#-модуля, если кому-то захочется его пересобрать.
Но для начала лучше запустить скомпиленную мной версию.

Прога простейшая - в сигнал GetURL1 записываем URL.
Далее дергаем сигнал Get1 и смотрим что получилось.

Посмотрите на скриншоты - на http-запросы только google заресолвился. Остальные не смогли.
То же самое через https - ресолвится без проблем.


Не пойму, может у меня версия SIMPL# какая-то кривая.
Пробовал на двух разных процессорах с разными прошивками (1.600 и 1.504) - поведение одинаковое.

АРХИВ: https://yadi.sk/d/DLUKW7NrWMoMxA

HTTP:


HTTPS


Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 21.09.19 17:21. Заголовок: olegny пишет: Какие..


olegny пишет:

 цитата:
Какие у вас версии фирмвари и include4 кстати?



Фирмвари 1.504 и 1.600 (написал выше).
А где посмотреть версию include4?

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 23.09.19 05:39. Заголовок: Да, интересная игруш..


Да, интересная игрушка! ))
У меня тоже не работает на том же контроллере, где я проверял c чистым C# выше.
Сообщу как найду что-нить...

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 23.09.19 07:21. Заголовок: Все ясно. Действител..


Все ясно. Действительно лажа в HTTP клинте при переадресации. Все эти сайты делают redirect на https:// и только google меняет при этом имя хоста на www.goole.com что добавляет 4 лишних симола, которые съедают мусор в конце во всех остальных случаях:

"crestron.comhttps" вот, что клиент пытается резолвить, например.

С другой стороны, http клиент не приспособлен для обработки https запросов так, что данный клиент просто должен бы "послать" с коректным исключением. Это они поправят я думаю, но не критично. Можно это обойти если обрабатывать redirect самому (AllowAutoRedirect = false).

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 29.09.19 18:18. Заголовок: olegny пишет: У мен..


olegny пишет:

 цитата:
У меня тоже не работает на том же контроллере, где я проверял c чистым C# выше.



Спасибо за расследование. Теперь понятно.
С AllowAutoRedirect = false стало лучше.

А что за "чистый C#" - это тот что SimplSharp Pro, или еще более "чистый", без крестроновских обёрток? :)
А как на нем программировать под Crestron?

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 30.09.19 05:10. Заголовок: Да, это обычный C# в..


Да, это обычный C# вне "песочницы", но официально пользователям не доступен.
Впрочем и смысла в нем практического мало, ибо все равно нужна объектная модель S#/Pro.
"Песочница" она не только чтобы не пущать, но и для удобства тоже... ;)

Говорят, что когда-нибудь в 4-й серии песочницу отменят и тогда будет доступна вся мощь .NET

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 28
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет