1

我在 iOS 上运行 JVM。

当我尝试使用来自网页的 POST 请求获取数据并且无法建立连接(客户端)时,出现以下错误:

java.net.SocketException: Invalid argument
  at gnu.java.nio.VMChannel.getpeername(Native Method)
  at gnu.java.nio.VMChannel.getPeerAddress(VMChannel.java:471)
  at gnu.java.nio.SocketChannelImpl.isConnected(SocketChannelImpl.java:194)
  at gnu.java.nio.SocketChannelImpl.read(SocketChannelImpl.java:216)
  at org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218)
  at org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:198)
  at org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:45)
  at org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:485)
  at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
  at java.lang.Thread.run(Thread.java:743)

我用来执行发布请求的代码(请注意,数据可能是一个空字符串):

URL url = new URL(urlstring);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();

// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn
     .getInputStream()));

此外,请求在单独的工作线程中执行。发生这种情况时,程序的其他功能不会受到影响。

我认为这与正在运行的 JVM 有关。知道为什么会抛出该错误吗?你将如何阻止它显示?

谢谢

4

0 回答 0