安装客户代码

Map<String ,Object> parameters = new HashMap<String,Object>();
    parameters.put(ShopMember.MemberMobile,shopMember.mobile);
    parameters.put(ShopMember.MemeberName,shopMember.name);
    parameters.put(ShopMember.MemberLogoUrl,new AVFile("avatar",picturePath,null));

    AVCloud.callFunctionInBackground("addMember", parameters, new FunctionCallback() {
        @Override
        public void done(Object o, AVException e) {
            if(e == null)
                showToast("ok");
            else
            {
                showToast(e.getMessage());
            }
        }
    });

云函数代码:

var realname = request.params.MemeberName;
var mobile = request.params.MemberMobile;
var avatar = request.params.MemberLogoUrl;

var member = new AV.Object('ShopMember');
member.set("MemberMobile",mobile);
member.set("MemberName",realname);
member.set("userBasic",user);
// member.set("MemberLogoUrl",avatar);

member.save(null,{
    success:function(member)
    {
        response.success("success");
    },
    error:function(member,error)
    {
        response.error(error.message);
    }
})

在调用的时候,客户端提示Timeout。
请问我是在哪个环节出了错。客户端代码还是云函数代码,应该怎么修改。

建议先在 Android 端将 AVFile 保存下,然后再把 AVFile 传到云引擎端,否则云引擎无法获取到对应的文件的。

记得云引擎的 leanengine 中间件需要 0.2.0 以上的版本,否则接受 AVFile 作为参数可能会有问题。

多谢sdjcw,在qq上帮了我好多次。

总结下:
客户端:在传AVFile参数的时候,文件最好先save下(这跟批量上传文件差不多)。

云函数:在接受这个参数的时候,
这种写法是无效的: member.set("MemberLogoUrl",avatar);//原因不明
正确的写法:member.set("MemberLogoUrl",AV.File.createWithoutData(avatar.id));
按理说是应该能够直接用avatar的。
打印出来avatar的信息,如下:

麻烦确认下你的 leanengine 中间件版本,如果是 0.2.0 以上的版本应该不会出现这样的问题。

如果出现,麻烦告诉我。