iLi*_*ard 5 php java webserver http localhost
我在localhost:80
. 但是,当我尝试将其与 相连时HttpUrlConnection
,它引发了异常。
package test;
public class Main {
public static void main(String[] args) throws IOException {
/* Error thrown on the following line */
new URL("http://localhost/").openConnection().connect();
}
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.base/java.net.PlainSocketImpl.connect0(Native Method)
at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:101)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
at java.base/java.net.Socket.connect(Socket.java:609)
at java.base/java.net.Socket.connect(Socket.java:558)
at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1253)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081)
at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1015)
at test.Main.main(Main.java:6)
Run Code Online (Sandbox Code Playgroud)
index.php 很简单<?php echo "Ello World"; ?>
我尝试使用 Chrome 和 cURL 访问该页面,但效果很好
C:\Users\User>curl -XGET "http://localhost/"
Ello World
Run Code Online (Sandbox Code Playgroud)
然后,我尝试向 google 发送 GET 请求:
new URL("http://google.com/").openConnection().connect();
Run Code Online (Sandbox Code Playgroud)
一切顺利,没有错误
后来我用关键字“ ConnectException ”、“ connectionrejected ”、“ java localhost ”...搜索了相关错误,仍然没有运气。
我的怀疑:
URLConnection
,因为它们不兼容URLConnection
阻止 HTTP 请求,因为它“不安全”有任何想法吗?
根据您描述的用例,最可能的原因是防火墙或某些防病毒软件阻止了您的 Java 程序,没有什么可以阻止防火墙阻止同一台计算机内的连接。
请原谅我说,但也要确保在执行测试时服务器实际上正在运行,也许它因任何原因终止或停止:我这样说是因为你的测试成功地针对google.com
和不是为了localhost
。
PHP 服务器将接受带有 的请求URLConnection
,乍一看,JavaHttpURLConnection
实现中没有任何内容可能导致这种行为,并且URLConnection
可以连接到安全或不安全的站点:以您举例的 Google 示例为例。
最后,虽然我认为使用该方法应该没有什么问题connect
,但在代码中尝试一些不同的东西,网络上有很多关于如何使用HttpURLConnection
. 以这个改编自Android 文档的例子为例- 请原谅代码的简单性:
URL url = new URL("http://localhost/");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
String line;
StringBuffer response = new StringBuffer();
while ((line = in.readLine()) != null) {
response.append(line);
}
in.close();
System.out.println("Response:\n" + response.toString());
} finally {
urlConnection.disconnect();
}
Run Code Online (Sandbox Code Playgroud)
根据您的评论以及您提供的输出curl
:
> GET / HTTP/1.1
> Host: localhost
> User-Agent: curl/7.83.1
> Accept: */*
Run Code Online (Sandbox Code Playgroud)
尝试包含已经提供的相同标头curl
:正如我在评论中提到的,我从未经历过这种行为,但它可能会有所帮助。请尝试以下操作,例如:
> GET / HTTP/1.1
> Host: localhost
> User-Agent: curl/7.83.1
> Accept: */*
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1237 次 |
最近记录: |