httpconnection Java HttpUrlConnection抛出连接被拒绝
我知道关于这个话题有几个问题,但我没有找到答案
我正试图打开与本地服务器的连接,但连接一直被拒绝
我让服务器运行,并用浏览器和一个名为Postman的谷歌应用程序测试了连接,结果正常
它在打开连接时失败,好像没有什么可连接的地方。或者可能有什么东西阻塞了连接?我测试了防火墙和防病毒,没有运气
在Postman中测试URL会返回一个应该返回的用户
如果我用“http://www.google.com”替换url,效果很好
这是我的密码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
*
* @author Gabriel
*/
public class HttpConnection {
public HttpConnection() {
}
public void makeRequest() throws MalformedURLException, IOException {
String url = "http://localhost:8000/users/1";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET");
//add request header
con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36");
con.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
con.setRequestProperty("Accept-Encoding", "gzip,deflate,sdch");
con.setRequestProperty("Accept-Language", "en-US,en;q=0.8,es;q=0.6");
con.setRequestProperty("Connection", "keep-alive");
con.setRequestProperty("Host", "localhost:8000");
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println(response.toString());
}
}
# 1 楼答案
我会胡乱猜出问题出在哪里。可能是IPv4/IPv6问题
如果是这样,这里有两种可能的解决方案
java.net.preferIPv4Stack=true
# 2 楼答案
我有类似的代码,但我的请求头要简单得多。基本上只是:
如果简化标题没有帮助,我会在使用fiddler之类的浏览器时捕获流量,然后使请求看起来与此完全一样
# 3 楼答案
我面临着完全相同的问题。使用此选项而不是本地主机:
http://[::1]:8000/index.php
# 4 楼答案
那么,把
http://localhost:8000/users/1
放进你的网络浏览器,你会得到什么?一个简单的Connection Refused
错误。不是你,是网站。另外,Url
返回使用Protocol Identifiers(http://, https://)
,Ending Domains(.com, .edu, .gov)
的网站,这也是出现错误的另一个原因# 5 楼答案
您可以通过在响应头中设置
access-control-allow-origin:*
属性,尝试在尝试连接的API上实现CORS# 6 楼答案
代码很好,效果也很好。现在问题一定出在运输或网络部分。我想说的是,您没有请求正确的服务器。如果您使用127.0.0.1而不是localhost,我认为您不会遇到问题。因此,我的嘉宾将是您在
/etc/hosts
或C:\Windows\System32\drivers\etc\hosts
中遇到问题我建议您尝试一个简单的测试:ping主机名并检查输出的ip地址是否正确