像在POSTMAN中一样使用Xamarin.Forms来使用RESTFul Web服务

时间:2017-05-16 10:17:21

标签: c# xamarin xamarin.forms

我是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客户端的截图。 enter image description here 由于我是Xamarin平台的新手(这是我的第一次尝试),我怀疑我在我的应用程序部分做错了什么,否则我应该得到与POSTMAN相同的结果。请帮我弄清楚问题。

更新

我已经测试了我在应用程序的解密方法中通过POSTMAN获得的结果,并且它的工作正常。所以我假设我的应用程序代码中存在问题。请帮助我,任何帮助将不胜感激。

0 个答案:

没有答案