我在Eclipse中构建了一个使用Cordova 2.0.0的Android应用程序。当使用Eclipse调试器构建并加载到手机上时,应用程序工作正常,但是当我在AndroidManifest文件中设置android:debuggable =“false”时,jQuery.ajax()POST失败。我没有告诉我LogCat跟踪中的失败原因。
这是jQuery.ajax调用:
jQuery.ajax({
url: that.endpoint,
data: that.data,
dataType: "json",
type: "POST",
contentType: "application/json",
success: successHandler,
error: errorHandler,
timeout: serviceTimeout
});
当android:debuggable =“true”时它工作正常并转到成功处理程序,但当它android:debuggable =“false”时它转到failureHandler,只有textStatus设置为“error”而没有其他任何指示为什么失败了。当它失败时,似乎帖子没有发生,因为我可以看到它没有点击我试图呼叫的网络服务。
有没有人知道为什么debuggable标志可能以这种方式影响我的应用程序?
“debuggable”标志会影响日志记录级别以外的其他内容吗?
任何提示或指示都将不胜感激。
干杯
答案 0 :(得分:5)
找到原因。我的代码很好。问题在于我试图调用的Web服务的SSL证书。虽然我的浏览器说没关系,但是当我使用SSL证书检查程序(例如http://www.geocerts.com/ssl_checker)检查它时,它向我显示证书层次结构存在问题。修复证书允许我的代码工作。
我的应用程序的iPhone版本从来没有遇到这个问题,所以看来Android的SSL证书检查更加严格(并且在调试模式下运行时没有进行证书检查。)
答案 1 :(得分:0)
当您将应用设置为debug = false时,您必须指定应用获取其数据的URI。在调试模式下,您的权限是放宽的,而不是处于调试模式。请参阅此参考:http://developer.android.com/guide/topics/providers/content-provider-basics.html#Permissions
您的代码看起来很好,而且只有在将应用程序设置为更严格的debug = false时它才会失败,这告诉我您没有正确设置URI权限。无论如何,这就是我首先要看的地方。