【发布时间】:2016-04-04 02:27:30
【问题描述】:
所以我正在使用自签名证书将我的所有 Http webservices 更改为 Https 进行测试(对于我正在制作的 android 应用程序)并且它在服务器端运行良好,我知道这一点,因为我可以将证书添加到我的 PC证书存储并完美访问该网站,但是当我的 android 应用程序调用它时,我在客户端遇到了麻烦。
我的 Servicestack 调用如下所示:
var client = new JsonServiceClient(stubServicesBaseUrl);
return client.Get(new GetLastStatusUpdate()).StatusUpdates.Last();
当它只是 http 时,这些曾经可以工作,但是由于我添加了代码以将自签名证书添加到 android 受信任的凭据存储中,因此调用已停止工作,而且似乎请求超时了。
byte[] certificate;
using (var streamReader = new StreamReader(Assets.Open("ScoutTestCert.crt")))
{
using (var byteStream = new MemoryStream())
{
streamReader.BaseStream.CopyTo(byteStream);
certificate = byteStream.ToArray();
}
}
var installCertificate = KeyChain.CreateInstallIntent();
installCertificate.PutExtra(KeyChain.ExtraCertificate, certificate);
StartActivity(installCertificate);
上面的代码将证书添加到“用户”部分中的 android 受信任商店,并允许我通过 androidEmulator 上的互联网应用程序导航到该站点而没有问题,所以似乎只有在尝试制作 ServiceStack 时才会出现问题在我的应用代码中调用。
我的代码中是否缺少某些内容,例如服务堆栈需要的额外设置或类似的东西?几天来,我一直在努力解决这个问题,而且遇到了一个真正的路障! 我试图将 web 服务调用保留为 servicestack,因为我希望它是 PCL 而不是 android 特定代码。
谢谢。
【问题讨论】:
标签: c# android ssl xamarin servicestack