Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法执行从Android到Azure移动服务的插入操作_Android_Azure Mobile Services - Fatal编程技术网

无法执行从Android到Azure移动服务的插入操作

无法执行从Android到Azure移动服务的插入操作,android,azure-mobile-services,Android,Azure Mobile Services,我正在尝试执行从Android到Azure移动服务的插入操作,但没有成功。我可以从Web上执行insert,但不能从Android上尝试。我可以使用Todoitem对象执行插入,但不能使用我自己的对象 这是数据库 这是我的Java类 public class Bill { public String Id; public String UserId; public String BillName; public double BillAmount; pu

我正在尝试执行从Android到Azure移动服务的插入操作,但没有成功。我可以从Web上执行insert,但不能从Android上尝试。我可以使用Todoitem对象执行插入,但不能使用我自己的对象

这是数据库

这是我的Java类

public class Bill {
    public String Id;
    public String UserId;
    public String BillName;
    public double BillAmount;
    public Date BillDueDate;
    public Boolean Paid;
}
这是我的移动服务使用情况

MobileServiceTable<Bill> mBillTable = mClient.getTable("Bills", Bill.class);

    Bill mBill = new Bill();
    mBill.BillAmount = 33.50;
    mBill.UserId = "2";
    mBill.BillDueDate = new Date(System.currentTimeMillis());
    mBill.BillName = "Android Phone Bill";
    mBill.Paid = true;


   Log.i(TAG, "Calling Insert");
   mBillTable.insert(mBill, new TableOperationCallback<Bill>() {

        @Override
        public void onCompleted(Bill entity, Exception exception, ServiceFilterResponse response) {
            Log.i(TAG, "Called insert");
            if (exception == null){
                Log.i(TAG, "Azure insert succeeded ID: " + entity.Id);
            } else {
                Log.i(TAG, "Azure insert failed again " + exception);
            }
        }
    });
    return rootView;
MobileServiceTable mBillTable=mClient.getTable(“Bills”,Bill.class);
Bill mBill=新票据();
mBill.BillAmount=33.50;
mBill.UserId=“2”;
mBill.BillDueDate=新日期(System.currentTimeMillis());
mBill.BillName=“安卓手机账单”;
mBill.Paid=true;
Log.i(标记“调用插入”);
insert(mBill,newTableOperationCallback(){
@凌驾
未完成公共作废(票据实体、例外、ServiceFilterResponse响应){
Log.i(标签,“称为插入”);
if(异常==null){
Log.i(标记“Azure插入成功ID:+entity.ID”);
}否则{
Log.i(标记“Azure插入再次失败”+异常);
}
}
});
返回rootView;
无论我做什么,我都会得到以下错误

Azure插入再次失败 com.microsoft.windowsazure.mobileservices.MobileServiceException: 处理请求时出错。


我做错了什么?出于某种原因,数据库显示了多个连接,但没有插入数据。我确实有一个从VisualStudio到该数据库的活动连接,我不确定这是否会拒绝更多连接

在经历了许多令人沮丧的小时后,我终于让它工作了。首先是星巴克的wifi连接在某种程度上阻碍了与Azure移动服务的连接。我通过使用手机而不是模拟器进行测试来解决这个问题。还有一个挑战,就是要弄清楚ZUMO服务所期望的确切表名是什么

我正在使用.Net后端,并使用EF代码第一次迁移创建数据库,如下所示

公共DbSet(Bill)Bills{get;set;}

在这种情况下,当我向ZUMO发布一个名为Bills的数据库表时,它是这样创建的

所以我(错误地)猜测我应该从Android客户端调用的表名是“Bills”,结果是出于某种原因,Azure Mobile将表名视为“Bill”,这是用于创建实体框架上下文的模型类。我是通过网络认识到这一点的,试试看


因此,请谨慎使用Azure移动服务的.Net后端,它似乎有一些问题需要注意。

在您得到的错误中(我假设是
TableOperationCallback
onCompleted
操作),如果您查看
response
参数的属性,它会说什么?它的状态代码是什么?它的内容是什么?响应为null,我尝试记录它,它返回null?谢谢,我添加了错误屏幕截图,我必须调用Response.getContent(),以获取错误消息是否存在错误的内部异常(原因)?查看它们是如何打印的……是的,这里是实际的例外情况,关于主机名的一些信息是正确的-在.NET后端,“移动服务表”不一定需要与“数据库表”相同-它们基于控制器类的名称。如果希望使用相同的名称,可以将类从
BillsController
重命名为
BillsController