【发布时间】:2018-09-17 18:22:32
【问题描述】:
在我决定删除某些内容之前一切正常,我的主机是 back4app.com。我验证了我的数据库的安全限制,所以我可以写,读也可以删除对象,但是当我尝试使用例如删除对象时:
gameScore.delete();
我收到这样的错误:
Connection Error
There was a networking error in the connection to parseapi.back4app.com/....
我不明白为什么,因为我可以做查询、更新对象、创建新对象等等,我唯一不能做的就是删除对象,为什么?
OBS:我正在为 Codename One 框架使用 parse4cn1 API,我的主机是 back4app.com。
已编辑:
@ShaiAlmog 是的,这是一个 android 设备,今天我和我的朋友已经弄清楚是什么导致了这个问题,它与 android 版本有关,它在 6.0.1 及更高版本中运行良好,但在 4.4 等版本中运行良好.2、4.2.2 和可能更低的版本不起作用,也不起作用。不确定是 parse4cn1 API 问题还是 Codename One API 问题,我无法调试它,因为我没有调试技能,但无论如何它与 android 版本有关。在我的国家,这些 android 版本已经在使用中,所以我的大多数客户以及我订阅 Codename One 的一些朋友都在使用这些版本的 android,如果您确认了这个问题,我们希望等待更新。
调试日志:
04-12 04:06:28.896: W/Conscrypt(2285): Could not set socket write timeout: java.lang.reflect.InvocationTargetException
04-12 04:06:28.896: W/Conscrypt(2285): at java.lang.reflect.Method.invokeNative(Native Method)
04-12 04:06:28.896: W/Conscrypt(2285): at java.lang.reflect.Method.invoke(Method.java:511)
04-12 04:06:28.896: W/Conscrypt(2285): Caused by: libcore.io.ErrnoException: setsockopt failed: EBADF (Bad file number)
04-12 04:06:28.896: W/Conscrypt(2285): at libcore.io.Posix.setsockoptTimeval(Native Method)
04-12 04:06:28.896: W/Conscrypt(2285): at libcore.io.ForwardingOs.setsockoptTimeval(ForwardingOs.java:120)
04-12 04:06:28.916: I/System.out(7079): showKeyboard false
04-12 04:06:28.996: D/hawaii.hwcomposer(1460): FBDevice::vsync called 65 times
04-12 04:06:29.006: D/hawaii.hwcomposer(1460): FBDevice::post called 7 times [7 0 0 0 0 0 0 0]
04-12 04:06:29.156: D/dalvikvm(7079): GC_CONCURRENT freed 1931K, 24% free 14689K/19148K, paused 2ms+12ms, total 53ms
04-12 04:06:29.226: D/Biblioteca Digital(7079): [EDT] 0:5:58,564 - Exception: java.net.ProtocolException - DELETE does not support writing
04-12 04:06:29.226: W/System.err(7079): java.net.ProtocolException: DELETE does not support writing
04-12 04:06:29.226: W/System.err(7079): at libcore.net.http.HttpURLConnectionImpl.initHttpEngine(HttpURLConnectionImpl.java:249)
04-12 04:06:29.226: W/System.err(7079): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:79)
04-12 04:06:29.226: W/System.err(7079): at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197)
04-12 04:06:29.226: W/System.err(7079): at libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:281)
04-12 04:06:29.226: W/System.err(7079): at com.codename1.impl.android.AndroidImplementation.openOutputStream(AndroidImplementation.java:4784)
04-12 04:06:29.226: W/System.err(7079): at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:674)
04-12 04:06:29.226: W/System.err(7079): at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
04-12 04:06:29.226: W/System.err(7079): at com.codename1.impl.CodenameOneThread$1.run(CodenameOneThread.java:60)
04-12 04:06:29.226: W/System.err(7079): at java.lang.Thread.run(Thread.java:856)
【问题讨论】:
-
打开网络监控工具,看看来回的请求。删除请求中发生了什么。当您在 back4app 网站中浏览数据库时,您是否看到 db 中的条目?
-
@ShaiAlmog 使用模拟器我可以删除,但在我的手机上它不起作用,而且代码是一样的,这很奇怪。
-
假设是安卓设备,我建议连接电缆并查看是否有异常抛出或类似问题。可以使用 DDMS/logcat 查看输出
-
@ShaiAlmog 我的答案对于字符数限制来说太长了,所以我会用我的答案更新我的问题。看看吧。
-
当您使用 USB 电缆将旧设备连接到 DDMS/logcat 时,您应该会看到输出。在删除之前清除控制台,按删除按钮并从 logcat 中复制文本。把它贴在这里,我会帮你弄清楚那里是否有什么有趣的东西。
标签: parse-platform codenameone parse-server back4app parse4cn1