我是Xamarin的新手,在我的应用程序中使用RESTful Web服务时遇到了问题。
我们在调用Web服务时使用加密技术。我需要在我的Xamarin.Forms应用程序中实现这些场景。为此,我已经将现有的加密方法(我们在原生Android和Web应用程序中使用)作为.NET程序集添加到我的项目中。
我的问题是,我在Xamarin.Forms中没有获得与POSTMAN相同的结果,因此我无法解密来自Web服务的结果。当我尝试解密时,显示错误。
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
POSTMAN的结果是能够使用相同的解密技术解密。
我在应用程序中使用以下代码。
public static string API_BASE_URL = "http://192.168.2.126:86/Appointment.svc/";
public static async Task<WebResult> doLogin(string phone, string password)
{
var uri = new Uri(API_BASE_URL + "PatientRegistration");
LoginRequest loginRequest = new LoginRequest
{
phonenumber = phone,
password = password,
device_id = "asdfsf",
GCM_Code = "esfdsdf"
};
var json = JsonConvert.SerializeObject(loginRequest);
EncryptionClass encryptionMethod = new EncryptionClass();
bool mOut = false;
string encryptedData = encryptionMethod.Encryption(json, out mOut);
if (mOut)
{
var content = new StringContent(encryptedData, Encoding.UTF8);
using (var client = new HttpClient())
{
//client.MaxResponseContentBufferSize = 256000;
HttpResponseMessage response = await client.PostAsync(uri, content);
string result = response.Content.ReadAsStringAsync().Result;
bool dOut = false;
string dcryptrdData = encryptionMethod.Decryption(result, out dOut);
if (dOut)
{
WebResult webApiResult = JsonConvert.DeserializeObject<WebResult>(dcryptrdData);
return webApiResult;
}
else
{
return null;
}
}
}
else
{
return null;
}
}
下面我附上了POSTMAN客户端的截图。 由于我是Xamarin平台的新手(这是我的第一次尝试),我怀疑我在我的应用程序部分做错了什么,否则我应该得到与POSTMAN相同的结果。请帮我弄清楚问题。
更新
我已经测试了我在应用程序的解密方法中通过POSTMAN获得的结果,并且它的工作正常。所以我假设我的应用程序代码中存在问题。请帮助我,任何帮助将不胜感激。