当前位置: 首页 > news >正文

如何访问云相关的api

问题

预研访问国外厂商云api相关的代码,发现请求国外厂商云获取token时,发生了下面的错误:

com.google.auth.oauth2.GoogleAuthException: Error getting access token for service account: connect timed out, iss: testmanagebucket@esoteric-cab-458306-c2.iam.gserviceaccount.comat com.google.auth.oauth2.GoogleAuthException.createWithTokenEndpointIOException(GoogleAuthException.java:163)at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:546)at com.google.auth.oauth2.OAuth2Credentials$1.call(OAuth2Credentials.java:270)at com.google.auth.oauth2.OAuth2Credentials$1.call(OAuth2Credentials.java:267)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at com.google.auth.oauth2.OAuth2Credentials$RefreshTask.run(OAuth2Credentials.java:635)at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:31)at com.google.auth.oauth2.OAuth2Credentials$AsyncRefreshResult.executeIfNew(OAuth2Credentials.java:582)at com.google.auth.oauth2.OAuth2Credentials.asyncFetch(OAuth2Credentials.java:233)at com.google.auth.oauth2.OAuth2Credentials.refreshIfExpired(OAuth2Credentials.java:204)at com.google.cloud.Demo.main(Demo.java:25)
Caused by: java.net.SocketTimeoutException: connect timed outat java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)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:303)at sun.net.NetworkClient.doConnect(NetworkClient.java:175)at sun.net.www.http.HttpClient.openServer(HttpClient.java:499)at sun.net.www.http.HttpClient.openServer(HttpClient.java:594)at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:263)at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:366)at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:207)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:193)at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1354)at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1329)at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:264)at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:113)at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:84)at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1012)at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:541)... 9 more

经过检查,发现是因为电脑直连国外云厂商相关的域名,被ban了。

解决方案

准备好代理服务,如果代理服务使用的是shadowsocks服务协议,则可以在代码里面加上Java的系统属性配置代理,需要在GoogleCredentials之前设置代理系统属性:

        System.setProperty("socksProxyHost", "Your_socks_proxy_host_一般是127.0.0.1");System.setProperty("socksProxyPort","通过下图所示获取到10808");

在这里插入图片描述

代码验证

java代码

public class Demo {public static void main(String[] args) throws IOException {System.setProperty("socksProxyHost", "127.0.0.1");System.setProperty("socksProxyPort","10808");String serviceAccountPath = "C:\\Data\\googleserviceaccount.json";try {GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(serviceAccountPath)).createScoped(new ArrayList<>(Collections.singleton("https://www.googleapis.com/auth/cloud-platform")));credentials.refreshIfExpired();String token = String.valueOf(credentials.getAccessToken());System.out.println(token);} catch (Exception e) {e.printStackTrace();System.out.println(e.getMessage());}return ;}
}
对应的maven要引入下面所示的依赖代码包<dependency><groupId>com.google.api-client</groupId><artifactId>google-api-client</artifactId><version>2.7.1</version></dependency><dependency><groupId>com.google.auth</groupId><artifactId>google-auth-library-bom</artifactId><version>1.34.0</version></dependency>

执行结果

返回了目标token

AccessToken{tokenValue=ya29.c.c0ASRK0Ga5YcPSvjrtaP4H2agRcZkajqGt49s3VMQ2fUB-_3WFjG8V3yQJyG9AtPU04Pqiidogrof0sY6zsaGBocYPnVeXNwPxLUPllg2LBP37WhjA0pCHwpMtthgGqS2yb2677gS6JZc7jgNQyQTcmWSv8cc2Exhd6D8NI6dWg2NO60bWE7FaDK2Hd1XlJeZMYKBqncprq_IKDrWp3y5DZ3ofCTA9TZpUMYBn5dJzSh60aVkTsdxhS1v8rxGHlega8rUInriAN2AZ5EVZUvVt_d6EhSPZZwJfO87deRuj3qxhfPLHpbv_r9eBo8JIYBCTf3UIIjdeXCrlRuB2SI78S-sWHSn0gI06pS1ibXHfGKB7d0E5AWL7_CDEL385PI81RBol02J3sjeeS_749l7dfo4hgJBwj54lS1-9ogm9nvBjuotm7kykFB_tnQitw1O3aUO4V_usxScX_qiSnixtkm2UkodqJ80unxmhWl70-XMeWg1Vgy7stfJ-Bxs8Upipt1X2huBf-icdlZgXh6cBd07n8ev-xIYi4dltSz5J6ipIBch55y4MUfIwchlyze69u2k-93Rojv7vz_sMFjjtwxScppfV7ZQ65SqB1BQealW9kolBBi4xO7B7uFq9BMJgW4p-l3y6kSBIJMfl2e4s4SpmyWt65Br6Jfqp-Mjrrfwg271F__WRS-9jdggM98btauwM80ljYOvsmqhsju8WI0jJgyah1exS1vigFoBjyOw2WdFMUgJuwvgh1p_dxFc6qS4QWawWhk2tj7zvSSOazr9hB-8VbyqytWSl1QJ1k77wgfxjxeh1oaSmXz3I37SrU00QUq8ZZlFFZBaZVQWW4a7XXd24YQsXe8vZtMlXc3QZdkF_lcyegg8U3ek3UeIft-3wnb2BFfje6nRc9Yx8uI_v1c5az5vmJ6uonvw7mI2-RF1j3_UV0o10OW8u249143uplw8MWxYxYoomkb11vh5p0l6ecrdpJ0Q_l7WqR2l2mUcrZfss3yg, expirationTimeMillis=1747142023645, scopes=[]}Process finished with exit code 0
http://www.xdnf.cn/news/428761.html

相关文章:

  • BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(下)
  • 12V转3.3V3A同步降压转换芯片WT6030
  • nginx配置反向代理支持CORS跨域请求
  • 【手表维修专用软件】佳易王手表钟表保养维护服务跟踪管理系统:保养维护登记,维修进度跟踪!#手表维修管理系统教程 #铭表设备维修记录软件#操作简单软件下载
  • 电子元器件结温计算与降额设计
  • Python训练营打卡——DAY24(2025.5.13)
  • aardio - 将文本生成CSS格式显示
  • 移动端(手机)ECharts 的myChart.on(‘click‘,还生效吗我怎么触发不了,没得鼠标触发不了点击事件
  • 物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
  • 传输层:UDP协议
  • 网络安全-等级保护(等保) 2-3 GB/T 22240—2020《信息安全技术 网络安全等级保护定级指南》-2020-04-28发布【现行】
  • 从HTTP轮询到WebSocket:如何让体育API性能提升100倍?
  • Postgresql与openguass对比
  • hab机制
  • 【2025最新】Windows系统装VSCode搭建C/C++开发环境(附带所有安装包)
  • [Java][Leetcode middle] 55. 跳跃游戏
  • 线程的概念和控制
  • [SAP] 通过事务码Tcode获取程序名
  • Nacos源码—9.Nacos升级gRPC分析七
  • Leetcode (力扣)做题记录 hot100(49,136,169,20)
  • YOLOv1:开启实时目标检测的新篇章
  • SWMM的快速建模方法、SWMM与其他软件之间的数据转换:排水防涝、海绵城市设计等技术与二次开发
  • dockerdesktop 重新安装
  • SQL Server中delete table和truncate table删除全表数据哪个快?
  • 云手机服务器搭建
  • TCP协议中的IP地址/域名
  • 在scala中sparkSQL连接mysql并添加新数据
  • 单链表:多米诺骨牌的奇妙旅程
  • Shinkai开源程序 是一个双击安装 AI 管理器(本地和远程),它允许您使用简单的 UI 在 5 分钟或更短的时间内创建 AI 代理
  • 量化感知训练与 PyTorch 的哪些事