Newtonsoft.Json.JsonReaderException MobileServicesClient RegisterAsync

Posted

技术标签:

【中文标题】Newtonsoft.Json.JsonReaderException MobileServicesClient RegisterAsync【英文标题】: 【发布时间】:2018-07-12 05:34:42 【问题描述】:

我一直关注那里的教程,我想出了这个......

这是一种设备注册方法,使用 Microsoft.WindowsAzure.MobileServices.MobileServiceClient.RegisterAsync,它应该向服务器发送设备令牌并注册到 Azure 通知中心。

这是我的代码:

    async Task SendRegistrationToServerAsync(NSData deviceToken)
    
        // This is the template/payload used by ios. It contains the "messageParam"
        // that will be replaced by our service.
        const string templateBodyAPNS = "\"aps\":\"alert\":\"$(messageParam)\"";

        var templates = new JObject();
        templates["genericMessage"] = new JObject
        
            "body", templateBodyAPNS
        ;
        var token = deviceToken.Description.Trim('<', '>').Replace(" ", "").ToUpperInvariant();
        var client = new MobileServiceClient(App.MobileServiceUrl);
        var push = client.GetPush();

        // token = "530FE16E53C9BCC93FC41C3A1AFB6FCE41F9078F1AC82D1C70B019E3B798CDD6"
        // Error Happens Here - Line Below
        await push.RegisterNativeAsync(token);

    

投掷

Newtonsoft.Json.JsonReaderException 解析值时遇到意外字符:

【问题讨论】:

具体哪一行会报错?你解析的数据是什么样的? 等待 push.RegisterNativeAsync(token); 解析字符串 字符串的内容是什么?它是有效的 json 吗? 我正在将这个字符串值传递给一个函数——我找不到它的代码(它在一个 nugget 包中),它的数据是 530FE16E53C9BCC93FC41C3A1AFB6FCE41F9078F1AC82D1C70B019E3B798CDD6" 【参考方案1】:

您的字符串中似乎有一些不需要的字符。 请尝试以下代码:

        var DeviceToken = deviceToken.Description;
        if (!string.IsNullOrWhiteSpace(DeviceToken))
        
            DeviceToken = DeviceToken.Trim('<').Trim('>');
        

如果有帮助请告诉我:)

【讨论】:

我已经删除了 '',并且 DeviceToken 不为空。所以我不完全确定它是否与不需要的字符有关,因为我可以将设备令牌作为 NSData 直接传递到 RegisterNativeAsync 这行返回什么? var push = client.GetPush();?? 它从mobileserviceclient返回推送对象,我这行没有任何问题,只有当我尝试push.RegisterNativeAsync()时

以上是关于Newtonsoft.Json.JsonReaderException MobileServicesClient RegisterAsync的主要内容,如果未能解决你的问题,请参考以下文章