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

问题描述 投票:0回答:2

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

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

该应用程序在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 request http-post
2个回答
0
投票

大胆猜测,服务器没有绑定到端口来侦听网络外部计算机连接,无论是在它自己的配置文件中,还是在外部调用 PC 正在使用的操作系统配置“网络设置”中的计算机端口上,以及 http它应该只是一个名为的域 http url。

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

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


0
投票

我在使用 apache cxf 时遇到了一个套接字异常,当它调用 ClientImpl 时,但由于 Proxy,它无法将值传递给验证。我开始使用 ConfigProvider.getConfig().getValue('foo 直接从 applicattion.properties 读取它.foo', string.class);

© www.soinside.com 2019 - 2024. All rights reserved.