Ошибка Xamarin Forms: обнаружен неожиданный символ - PullRequest
0 голосов
/ 07 августа 2020

Я довольно новый программист и пытаюсь создать приложение в Xamarin Forms с C#. Я очень внимательно слежу за серией руководств с YouTube (https://www.youtube.com/playlist?list=PLV916idiqLvcKS1JY3S3jHWx9ELGJ1cJB). Я использую Visual Studio 2019, но руководство было создано с помощью Visual Studio 2017.

Я закончил работу с экраном входа в систему и пытаюсь перейти на следующую страницу в приложении. Экран входа в систему работает нормально, но как только я нажимаю кнопку «Войти», я получаю следующую ошибку:

Newtonsoft. Json .JsonReaderExeption: 'При анализе значения обнаружен неожиданный символ : <. Путь », строка 0, позиция 0. '</p>

Кажется, что проблема заключается в обмене данными между приложением и базой данных, хотя - поскольку я новичок в этом - я Я не совсем уверен.

Вот несколько ссылок на возможные решения, которые я нашел до сих пор:

При анализе значения обнаружен неожиданный символ ,

jsonreaderexception обнаружен неожиданный символ ,

https://social.msdn.microsoft.com/Forums/vstudio/de-DE/765784e3-abbd-4b14-a57c-81cdd3ad99ac/unexpected-character-encountered-while-parsing-value-lt-path-line-0-position-0?forum=csharpgeneral,

https://github.com/docusign/docusign-csharp-client/issues/72,

https://www.codeproject.com/Questions/1227147/Unexpected-character-encountered-while-parsing-val,

https://help.octopus.com/t/error-unexpected-character-encountered-while-parsing-value-path-line-0-position-0/4121.

Я нашел еще несколько, но, похоже, не могу применить их решения к моему коду. Кстати, вот он:

public RestService()
        {
            client = new HttpClient();
            client.MaxResponseContentBufferSize = 256000;
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
        }

        public async Task<Token> Login(User user)
        {
            var postData = new List<KeyValuePair<string, string>>();
            postData.Add(new KeyValuePair<string, string>("grant_type", grant_type));
            postData.Add(new KeyValuePair<string, string>("username", user.Username));
            postData.Add(new KeyValuePair<string, string>("password", user.Password));
            var content = new FormUrlEncodedContent(postData);
            var response = await PostResponseLogin<Token>(Constants.LoginUrl, content);
            DateTime dt = new DateTime();
            dt = DateTime.Today;
            response.expire_date = dt.AddSeconds(response.expire_in);
            return response;
        }

        public async Task<T> PostResponseLogin<T>(string weburl, FormUrlEncodedContent content) where T : class
        {
            var response = await client.PostAsync(weburl, content);
            var jsonResult = response.Content.ReadAsStringAsync().Result;
            var responseObject = JsonConvert.DeserializeObject<T>(jsonResult);
            return responseObject;
        }

        public async Task<T> PostResponse<T>(string weburl, string jsonstring) where T : class
        {
            var Token = App.TokenDatabase.GetToken();
            string ContentType = "application/json";
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Token.access_token);
            try
            {
                var Result = await client.PostAsync(weburl, new StringContent(jsonstring, Encoding.UTF8, ContentType));
                if (Result.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    var JsonResult = Result.Content.ReadAsStringAsync().Result;
                    try
                    {
                        var ContentResp = JsonConvert.DeserializeObject<T>(JsonResult);
                        return ContentResp;
                    }
                    catch { return null; }
                }
            }
            catch { return null; }
            return null;
        }

        public async Task<T> GetResponse<T>(string weburl) where T : class
        {
            var Token = App.TokenDatabase.GetToken();
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Token.access_token);
            try
            {
                var response = await client.GetAsync(weburl);
                if (response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    var JsonResult = response.Content.ReadAsStringAsync().Result;
                    try
                    {
                        var ContentResp = JsonConvert.DeserializeObject<T>(JsonResult);
                        return ContentResp;
                    }
                    catch { return null; }
                }
            }
            catch { return null; }
            return null;
        }

Это единственная часть всего проекта, где реализовано json. Я не знаю, может ли ошибка исходить из другая часть, но я в этом сомневаюсь.

Как я уже говорил, я довольно новый программист, поэтому мне очень трудно понять, что не так или что я могу попробовать .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...