提问人:kfir 提问时间:11/20/2018 最后编辑:Kirbykfir 更新时间:11/9/2023 访问量:4251
Java.net.SocketException:无效参数:在映射驱动器中创建
Java.net.SocketException: Invalid argument: create In mapped drive
问:
我创建了一个 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
但是,一切都没有改变。
我能做些什么?
答:
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 读取它;
评论