Я хочу выполнить HttpPost на Raspberry с помощью Mono + Restsharp.

Вызов Httpie, который я пытаюсь воспроизвести в коде, выглядит примерно так:

 http POST https://XXXXX.azurewebsites.net/api/report key=value

Это код C #:

RestClient nodeRed = new RestClient("http://XXXXX.azurewebsites.net/");
var request = new RestRequest("api/report", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddBody(new { Timestamp = DateTime.Now, Data = "Test" });
request.Timeout = 5000;

var response = nodeRed.Execute(request);

Код работает нормально, просто не работает. Ответ не содержит никакого содержимого (ответ сервера с «Успех» на httpie / MS .NET Framework).

Я уже узнал о сертификатах на Mono. Бег

sudo certmgr -ssl -v -m "https://XXXXX.azurewebsites.net"

Сообщает мне, что он добавляет два сертификата в первый раз. Повторный запуск снова добавляет первый сертификат (и снова), как будто он не работает.

Сертификат X.509 v3 Выдан из: C = IE, O = Baltimore, OU = CyberTrust, CN = Baltimore CyberTrust Root Выдан в: C = США, S = Вашингтон, L = Редмонд, O = Microsoft Corporation, OU = Microsoft IT, CN = Microsoft IT SSL SHA2 Срок действия: 19.12.2013 20:07:32 Действительно до: 19.12.2017 20:06:55 ВНИМАНИЕ: подпись сертификата НЕПРАВИЛЬНА Импортировать этот сертификат в хранилище CA?

Если я подтверждаю и повторяю импорт, certmgr просит меня импортировать снова. Как я могу заставить http-сообщение работать?

22
quadroid 5 Сен 2016 в 16:15

3 ответа

Лучший ответ

Вы можете попробовать игнорировать сертификаты с этим

ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true;

Обновить
как я вижу здесь существует также на Mono

3
gmetax 10 Ноя 2016 в 12:49

У него должно быть какое-то соединение с Mono. По умолчанию не доверяет никаким SSL-сертификатам ... хорошо проверьте эту статью http://www.mono-project.com/docs/faq / security / https://github.com/restsharp/RestSharp/issues/728 < / а> https://github.com/dotnet/roslyn/issues/7422

Или Вам нужно использовать openssl для анализа сертификата:

    openssl s_client -showcerts -connect www.domain.com:443
openssl x509 -text -noout -in some.crt
1
youngdero 14 Сен 2016 в 12:58

Привет, друг, у меня есть строка кода, которая работает для другого места, работает нормально. Вы можете попробовать это:

Веб-форма запроса и ответа с использованием метода публикации на той же странице c # asp.net

0
Community 23 Май 2017 в 10:30