Java.net.SocketException:无效参数:在映射驱动器中创建

Java.net.SocketException: Invalid argument: create In mapped drive

提问人:kfir 提问时间:11/20/2018 最后编辑:Kirbykfir 更新时间:11/9/2023 访问量:4251

问:

我创建了一个 Java 应用程序,用于向另一台服务器发送 HTTP POST 请求。

  • 服务器中的防火墙已关闭。
  • 电脑中的防火墙已关闭。

该应用程序在 C 驱动器的 PC 上完美运行。

该应用程序在带有本地映射驱动器的 PC 上完美运行。

但是,当我将应用程序放在网络映射驱动器中时,出现错误:

java.net.SocketException:参数无效:在映射驱动器中创建

这是我的代码:

HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost postRequest = new HttpPost(getUrl());
postRequest.setHeader(AUTHERIZTION, getAuthString());

HttpResponse response = httpClient.execute(postRequest);

这是完整的错误:

java.net.SocketException: Invalid argument: create
    at java.net.Socket.createImpl(Unknown Source)
    at java.net.Socket.getImpl(Unknown Source)
    at java.net.Socket.setSoTimeout(Unknown Source)
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:119)
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
    at rest.RestClient.postGetQuery(RestClient.java:105)
    at frame.ScanJFrame.initProperty(ScanJFrame.java:195)
    at Main.runAction(Main.java:63)
    at Main.main(Main.java:21)

我试过这个:

setx _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true

但是,一切都没有改变。

我能做些什么?

java 请求 http-post

评论

12赞 Vüsal 2/20/2019
有一个与您的问题相关的未解决错误:如果 JVM 安装在共享上,则绑定到 localhost 的套接字异常
1赞 Akash Shah 2/20/2019
这可能与网络问题有关,您可以使用 Packet Tracer 来识别错误发生的位置
1赞 vanOekel 2/21/2019
Vusal 提到的错误似乎有一种解决方法。您可以测试解决方法,看看该错误是否与您的问题相关。
0赞 KUTAY ZORLU 8/7/2021
你能写你的ALL命令行来运行这个应用程序吗?
0赞 Samuel Marchant 8/12/2023
computername 是一个思想,file:// 也是。http 网络的其他微妙之处包括您调用的服务器的端口号 8080 或 80(如果是 http 服务器),如果不是,则它是文件协议。

答:

0赞 Samuel Marchant 9/25/2022 #1

假设是,服务器没有绑定到端口来侦听其自己的配置文件中的网络外部机器连接,或者外部调用 PC 正在使用的操作系统配置“网络设置”中的机器端口,并且使用 http 它应该只是一个域 http url 调用。

我最好还指出,jdk 或 jre 在其 /bin 目录中有一个“jconsole”程序,可用于为运行调用方 JVM 的二进制文件设置网络连接。 这似乎是问题所在,您的 java 客户端程序需要绑定到另一台机器的端口才能连接到它。

如果要从另一台计算机调用文件,请使用映射驱动器语法“file://”+“//servername/afolder/file.txt” 此方案适用于作为映射驱动器的 URL。

0赞 Ti_alcof 11/9/2023 #2

我有一个使用 apache cxf 的套接字异常,当它调用 ClientImpl 时,但不知何故,由于代理,它无法将值传递给 autenticate。我开始使用 ConfigProvider.getConfig().getValue('foo.foo', string.class) 直接从 applicattion.properties 读取它;