2015-07-09 53 views
0

我有一个自定义的API在Azure的移动服务设置(JS):Azure的移动服务自定义API参数在Android的

exports.post = function(request, response) { 
    var tables = request.service.tables; 
    var accounts = tables.getTable('Account'); 
    var item = { 
     id: request.body.members.id 
    } 

    accounts.where(function (item) { 
     return this.id == item.id; 
    }, item).read({ 
    success: function (results) { 
     if (results.length === 0) { 
       response.send(200, { Status: "FAIL", Error: "Something went wrong." }); 
     } 
     else 
     { 
     var account = results[0]; 
     response.send(200, { 
      id: account.id, 
      name: account.name, 
      email: account.email 
     }); 
} 
     } 
    }); 
}; 

我与调用它从安卓

List<Pair<String, String> > lp = new ArrayList<Pair<String, String> >(); 
      lp.add(new Pair("id", userId)); 

      mClient.invokeApi("custAPI", "POST", lp, whoami.class, new ApiOperationCallback<custAPI>() { 

       @Override 
       public void onCompleted(custAPI result, 
             Exception error, ServiceFilterResponse response) { 
        if (error == null) { 
         Log.w("TEST", result.name.toString()); 
        } 
       } 
      }); 

的自定义API正在被调用,但参数似乎没有被传递 - request.body.members.id不存在。

如何正确地将参数传递到Android上的自定义API?

回答

0

您应该为此创建一个自定义类。例如,您想发送会员信息,您可以创建类如下:

import com.google.gson.annotations.SerializedName; 
public class Member { 
    @SerializedName("id") 
    public int ID; 
    @SerializedName("name") 
    public String Name; 
} 

现在调用invokeApi方法并传递成员对象。

Member member = new Member(); 
member.ID = 1; 
member.Name = "Someone"; 
mClient.invokeApi("custAPI", "POST", member, Member.class, new ApiOperationCallback<custAPI>() 

而且里面的自定义API,您将有机会获得你的对象,你可以访问使用request.body.id的ID和request.body.name的成员对象的内部名称。

+0

嘿...感谢您与我们分享...我有一个问题你能帮助....虽然我知道天蓝色的各种东西像检索和插入数据到非SQL表,但我仍然是新蔚蓝,想要一些关于如何编写和使用API​​的教程.plss提供给我一些链接 –

+0

还有一个问题...我如何检索和使用android中的单个值。我正在采取单一的价值,而不是像azure教程中指定的整个列表。 –

相关问题