我想使用Mono + Restsharp在Raspberry上执行HttpPost。
我尝试在代码中重现的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 =巴尔的摩,OU = CyberTrust,CN = Baltimore CyberTrust Root 发布于:C = US,S =华盛顿,L = Redmond,O = Microsoft Corporation,OU = Microsoft IT,CN = Microsoft IT SSL SHA2 有效期:2013年12月19日20:07:32 有效期至:19/12/2017 20:06:55 警告:证书签名为无效 将此证书导入CA商店?
如果我确认并重复导入,certmgr会要求我再次导入。我怎样才能让http帖子起作用?
答案 0 :(得分:3)
您可以尝试忽略带有
的证书ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true;
更新
我可以看到Mono上还存在here
答案 1 :(得分:1)
它必须与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
答案 2 :(得分:0)
嗨,朋友,我有一行代码正在为其他地方工作正常。你可以试试这个:
<强> Request and response web form using Post Method in same page c# asp.net 强>