Java 如何使用ksoap2对webservice调用强制执行超时?

Java 如何使用ksoap2对webservice调用强制执行超时?,java,java-me,timeout,ksoap2,Java,Java Me,Timeout,Ksoap2,我需要为使用KSOAP2连接到web服务的J2ME应用程序添加超时 我尝试了在时描述为可能的伪超时的方法,但它似乎在该设备上不起作用 我会在另一个线程上运行连接,并在计时器触发时将其杀死,但在线程在J2ME per中完成执行之前无法将其杀死(这是一个嵌入式设备,因此我不能在后台留下无限数量的线程阻塞)。我不能使用poll-a-boolean方法,因为这是一次尝试打开阻塞的连接 系统超时似乎在设备模式之间有所不同,对于我来说太长了 有人对可能工作的东西有什么想法吗?请记住,你不是在和功能齐全的计算

我需要为使用KSOAP2连接到web服务的J2ME应用程序添加超时

我尝试了在时描述为可能的伪超时的方法,但它似乎在该设备上不起作用

我会在另一个线程上运行连接,并在计时器触发时将其杀死,但在线程在J2ME per中完成执行之前无法将其杀死(这是一个嵌入式设备,因此我不能在后台留下无限数量的线程阻塞)。我不能使用poll-a-boolean方法,因为这是一次尝试打开阻塞的连接

系统超时似乎在设备模式之间有所不同,对于我来说太长了


有人对可能工作的东西有什么想法吗?

请记住,你不是在和功能齐全的计算机打交道。在某些设备上,您无法中断网络操作,尤其是TCP连接

这就是我们要做的

  • 在建立连接之前,以较短的频率(例如2秒)创建另一个监控计时器线程
  • 在监控线程中,如果未达到时间限制,您可以向设备发送一些消息,假装您正在取得进展
  • 如果达到某个时间限制,请尝试通过发送thread.interrupt()来中断另一个线程。此呼叫在MIDP中可用
  • 在连接线程上,如果被中断,请退出

  • 这在所有模拟器上都非常有效,但在某些手机上,连接线程直到5分钟后才出现异常。

    我最终使用了具有setSocket()方法的Socket类。

    可以提到,我对KSoap2 v2.5.2进行了修改,以支持HttpTransportSE类的超时。当超时发生时,它将抛出SocketTimeoutException


    jar和src都可以在这个url上找到

    不幸的是,这不是一部手机,而是一台复印机,它不使用MIDP,因此没有Thread.interrupt()。问题被标记为j2me,但您没有访问MIDP API的权限?你在那台复印机上用的是CDC吗?什么型号?你能再解释一下你是如何使用它的吗?请在这里给出正确的答案?还是想法?