关于如何在Android中的安装类中使用REST API(SERVICE)传递ParseObject(对象)



我是Sagar,我正在尝试使用REST API (Service)实现Parse Push-Notification in Android,并且我几乎成功地使用REST APIXamarin-Android中实现Push-Notification。但是,我被困在将数据发送到REST service中的一部分。我试图通过服务中的ParseObject传递,但是在解析表中需要对象,()。我试图通过以下ParseObject as

JsonConvert.SerializeObject(ParseUser.CurrentUser)

它转换ParseObject into数组和数组未在表中接受,并且我无法将其保存在表中。因为我需要对象。我需要开发人员的解决方案或建议。您的帮助将不胜感激。我正在尝试以下代码以实现结果。

 public static void RegisterPush(string regristrationId)
 {   
    if (regristrationId != null) {
        string appID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        string restID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        string masterID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        try {
            var client = new RestClient ("https://api.parse.com");
            var request = new RestRequest ("1/installations", RestSharp.Method.POST);
            request.AddHeader ("Accept", "application/json");
            request.AddHeader ("X-Parse-Application-Id", appID);
            request.AddHeader ("X-Parse-REST-API-Key", restID);
            request.Credentials = new NetworkCredential (appID, masterID);
            request.Parameters.Clear ();
            Console.Error.WriteLine ("ParseUser.CurrentUser-->"+ (ParseObject) ParseUser.CurrentUser);
            //JsonConvert.SerializeObject(ParseUser.CurrentUser)
            string strJSONContent = "{"user" :"+ JsonConvert.SerializeObject(ParseUser.CurrentUser)+","owner":"" +         ParseUser.CurrentUser.ObjectId + "","deviceType":"android","GCMSenderId":"1234567890","appName":"abcdefgh","pushType":"gcm","deviceToken":"" + regristrationId + ""}";
            Console.Error.WriteLine("json string-->"+ strJSONContent);
            request.AddParameter ("application/json", strJSONContent, ParameterType.RequestBody);
            client.ExecuteAsync (request, response => {
                Console.Error.WriteLine ("response for android parse installation-->" + response.Content);
            });
        } catch (Exception ex) {
            Console.WriteLine (ex.Message);
        }
    }
}`
Output:{"user" :[{"Key":"dealOffered","Value":4},{"Key":"dealRequested","Value":5},{"Key":"displayName","Value":"Cook"},{"Key":"email","Value":"lorenzo@gmail.com"},{"Key":"firstName","Value":"Lorenzo"},{"Key":"lastName","Value":"Cook"},{"Key":"mobileNumber","Value":9999999999.0},{"Key":"picture","Value":{"IsDirty":false,"Name":"tfss-afd25c29-6679-4843-842c-fe01f7fcf976-profile.jpg","MimeType":"image/jpeg","Url":"http://files.parsetfss.com/profile.jpg"}},{"Key":"provider","Value":"password"},{"Key":"userType","Value":"Merchant"},{"Key":"username","Value":"merchant@sailfish.com"},{"Key":"zipCode","Value":2342343}],"owner":"3cF1vHUXkW","deviceType":"android","GCMSenderId":"1234567890123","appName":"Sailfish","pushType":"gcm","deviceToken":"APA91bE3bsTIInQcoloOBE4kdLVVHVTRVtNyA1A788hYSC15wAVu8mUg-lwk7ZPk370rngrK7J6OoLmiM9HRr1CGPaBo6LCNrSUL7erBku4vepaFFkQzgqS6BcAemp"}
Error:{"code":111,"error":"invalid type for key user, expected  *_User, but got array"}

maven

我在一个查询中找到了解决方案,解析Xamarin Docs,方法很简单,但是我很难找到。

问题在于,数据以JSON格式在REST中传递,以通过REST API传递任何指针,如下所示。

解决方案如下:`{

"user":{
    "__type":"Pointer",
    "className":"_User",
    "objectId":"qYvzFzGAzc"
},
"owner":"qYvzFzGAzc",
"deviceType":"android",
"GCMSenderId":"123456789",
"appName":"NiceApp",
"pushType":"gcm",
"deviceToken":"APA91bFeM10jdrCS6fHqGGSkON17UjEJEfvJEmGpRM-d6hq3hQgDxKHbyrqAIxMnEGgbLEZf0E9AllHxiQQQCdEFiNMF1_A8q0n9tGpBE5NKhvS2ZGJ9PZ7585puWqz_1Z1EjSjOvgZ1LQo708DeL2KzA7EFJmdPAA"

}`

看起来您的列user设置错误。它应该显示为指针< _user>不指针

如果将此类加载到数据浏览器中,则是定义为字符串的"用户"键,或指针< _user>

此错误似乎表明这是一个字符串列,这就是为什么parse.user对象没有被接受为有效值的原因。您可能之前曾尝试在此密钥上设置字符串,然后将"用户"键锁定为字符串列。

在此页面上给出的示例中找到了它-https://www.parse.com/docs/rest

您是否在通过ParseObject时检查了REST API连接?
因为您的错误说:

   Error:{"code":111,"error":"invalid type for key user, expected  *_User, but got array"} 

在这里"code":111当服务器拒绝连接

时,此错误代码出现