最近有个需求就是集成Google和facebook登录,我这边就是拿着前端发来的accesstoken去调用Google获取facebook的api获取用户信息,进行个注册,但是在后端发送请求时,显示超时,但是我用postman都可以获取到
public static String sendGet(String url)
{
System.out.println(url);
String result = "";
BufferedReader in = null;
try {
String urlNameString = url;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
in.close();
} catch (Exception e) {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
return null;
}
e.printStackTrace();
return null;
}
return result;
}
public static void facebookAuth(String token)
{
String url = "https://graph.facebook.com/me?access_token="+token;
System.err.println(sendGet(url));
}
public static void main(String[] args) throws GeneralSecurityException, IOException
{
facebookAuth("EAAGMf76DDU8BAIaO3MSQZBNksZCqfmlIHsIH1rJsvhl3jZCFYFPuZA6FZCQJAJGZBeZCnPJpUB0u504LbZBYP5ElJyz0B09AavAOKSIzwcdJKVL5bXDpIhaDNSIMbz1Wow6sriOtmXL6yhplkiSeutenkRvalcKgNDSUnZBuFtS02tX4G7r31pLt38mD0zgzalU6Nb76TojTKz0l3vaGzZCTcPwX29JBGHNkkSZA1uhyq3ZBHgZDZD");
}
运行结果
java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:75)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
at java.net.Socket.connect(Socket.java:606)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:298)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:292)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:395)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:203)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1167)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1061)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:189)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:167)
at com.google.GoogleAuth.sendGet(GoogleAuth.java:80)
at com.google.GoogleAuth.facebookAuth(GoogleAuth.java:109)
at com.google.GoogleAuth.main(GoogleAuth.java:143)
null
我怀疑是不是没翻q的原因,结果用了还是一样的,但是我用postman就可以获取到信息,或者说idea里要发送https请求,要ssl证书?我也尝试了也没用
求能者帮忙,困扰好几天了,弄不出来怕是要走人了5555555555555555555555555555