2015-06-30 3 views
0

Я хочу сделать WebRequest из своего приложения, и мне нужно добавить Client-Certificate. В моей простой C# Решение Я использую следующие две строки для этого:Правильный путь для сертификата клиента в Xamarin PCL Android

X509Certificate myCert = X509Certificate.CreateFromCertFile(certPath); 
request.ClientCertificates.Add(myCert); 

Проблема заключается в том, что я не знаю, что я должен использовать в качестве «CertPath» внутри моего приложения. Я делаю проект Xamarin.Forms PCL и тестирую его на Android. Я узнал, что для Android я должен поместить файл в папку «Активы» моего проекта, но я не знаю, какой правильный путь для параметра метода. Моя реализация для WebRequest находится в специфической части Android.

+0

Я не совсем понимаю, о чем вы просите. Вы говорите, что узнали, что вы должны поместить его в папку «Активы», и что вы все еще хотите знать? Он все еще не может найти файл? Посмотри на это; http://developer.xamarin.com/guides/android/application_fundamentals/resources_in_android/part_6_-_using_android_assets/ –

+0

Мое понимание AssetManager заключается в том, что он позволяет получить доступ к файлам (например, читать их). Но для моего метода выше мне нужно «filename» (полный путь) файла в каталоге Asset для доступа к этому файлу, и я не знаю, как получить этот путь – user3477737

ответ

0

Хорошо, я не получил путь для файлов в проекте, но я нашел другое решение:

  1. Получить какой-либо путь вашего приложения на устройстве/эмуляторе из каталога, где это можно получить:

    eg System.Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments)

  2. Скопируйте сертификат вручную на устройство/эмулятор через DDMS (в Android Monitor Device) - именно в пути, который показан на выше способом.

  3. Используйте этот путь, включая имя файла, которое вы скопировали для пути сертификата .

Я также обнаружил, что для меня сертификат, кажется, не работает в Xamarin, если это в формате PKCS12, но я не знаю, почему. Я превратил его в пем.

Я думаю, что после «импорта» сертификата необходимо сохранить его в хранилище ключей или что-то в этом роде и удалить файл, но я еще не так далеко.