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

班级网站设计素材推广赚佣金

班级网站设计素材,推广赚佣金,做家教什么网站,专业网站设计建站前言:因为国内调用google相关api需要通过代理访问(不想设置全局代理),所以在代理这里经常遇到问题,先说一下结论 GCS 需要设置全局代理或自定义代理选择器, FCM sdk admin 在初始化firebaseApp时是支持设置的。 GCS: 开始时尝试在…

前言:因为国内调用google相关api需要通过代理访问(不想设置全局代理),所以在代理这里经常遇到问题,先说一下结论 GCS 需要设置全局代理或自定义代理选择器, FCM sdk admin 在初始化firebaseApp时是支持设置的。

GCS: 开始时尝试在使用sdk时传入代理的配置,但没有实际效果。

参考如下资料:

https://stackoverflow.com/questions/49980303/how-to-set-proxy-for-storage-service-in-gcp-using-java

最终选择如下资料中的方案使用自定义代理选择器解决了问题:

Java Networking and Proxies

@Slf4j
public class CustomProxySelector extends ProxySelector {private final ProxySelector defaultSelector;private final Proxy proxy;private final Set<String> targetDomains;public CustomProxySelector(ProxySelector defaultSelector, Proxy proxy, Set<String> targetDomains) {this.defaultSelector = defaultSelector;this.proxy = proxy;this.targetDomains = targetDomains;}// 根据 URL 选择代理@Overridepublic List<Proxy> select(URI uri) {if (uri != null && uri.getHost() != null) {log.info("uri:{}", uri.getHost());for (String domain : targetDomains) {if (uri.getHost().endsWith(domain)) {log.info("uri google:{} proxy:{}", uri.getHost(), proxy.toString());return List.of(proxy);}}}return defaultSelector.select(uri);}@Overridepublic void connectFailed(URI uri, SocketAddress sa, IOException ioe) {defaultSelector.connectFailed(uri, sa, ioe);}}@Slf4j
@Component
public class ProxyConfigurer {@Value("${gateway.google.map-proxy.enable:false}")private boolean proxyEnabled;@Value("${gateway.google.map-proxy.host:}")private String proxyHost;@Value("${gateway.google.map-proxy.port:}")private int proxyPort;@PostConstructpublic void configureProxy() {if (!proxyEnabled) {return;}log.info("proxyHost:{} port:{}", proxyHost, proxyPort);ProxySelector defaultSelector = ProxySelector.getDefault();Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));Set<String> targetDomains = new HashSet<>(List.of(".googleapis.com"));CustomProxySelector customSelector = new CustomProxySelector(defaultSelector, proxy, targetDomains);ProxySelector.setDefault(customSelector);log.info("Proxy selector configured successfully.");}}

FCM:

这个因为是后面我才开始对接我直接就选择了代理选择器方式发现本地好用,但服务器上就不好用,报错如下:

Caused by: java.io.IOException: Unknown exception in request
    at com.google.firebase.internal.ApacheHttp2Request.execute(ApacheHttp2Request.java:134)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1012)
    at com.google.firebase.internal.ErrorHandlingHttpClient.send(ErrorHandlingHttpClient.java:97)
    ... 38 more
Caused by: java.util.concurrent.ExecutionException: java.net.SocketException: Network is unreachable
    at org.apache.hc.core5.concurrent.BasicFuture.getResult(BasicFuture.java:72)
    at org.apache.hc.core5.concurrent.BasicFuture.get(BasicFuture.java:85)
    at com.google.firebase.internal.ApacheHttp2Request.execute(ApacheHttp2Request.java:123)
    ... 40 more
Caused by: java.net.SocketException: Network is unreachable

开始怀疑是proxy有问题,这时候一般选择用curl测试proxy是否连通

curl -I --proxy xxx:3128 "https://oauth2.googleapis.com/token"

返回404 代表网络上是通的,后来查询文档Firebase: Accessing Firestore and Firebase through a proxy server | by Hiranya Jayathilaka | FAUN — Developer Community 🐾

其实SDK是支持动态设置的,但文档中与我的实现有出入所以参照源码加了一个动态的令牌鉴权改造代码如下:

@PostConstructprivate void initializeFirebase() {try {InputStream inputStream = fileServiceUtil.downloadFile(fcmPath);if (inputStream == null) {log.error("fcm file download fail");throw new GeneraliPluginException("fcm file download fail");}InetSocketAddress address = new InetSocketAddress(proxyHost, proxyPort);final HttpTransport transport = new NetHttpTransport.Builder().setProxy(new Proxy(Proxy.Type.HTTP, address)).build();HttpTransportFactory transportFactory = () -> transport;FirebaseOptions options =FirebaseOptions.builder().setCredentials(GoogleCredentials.fromStream(inputStream, transportFactory)).setHttpTransport(transport).build();FirebaseApp.initializeApp(options);} catch (IOException e) {Log.error("PushNotificationServiceAndroidImpl.initializeFirebase", e);}}

解决问题。 

思考:还是要以官网文档和各种社区讨论来编写代码,经常查询各种社区是非常有帮助的。

http://www.dtcms.com/wzjs/326059.html

相关文章:

  • 网站模板 响应式成都网站seo服务
  • 软件汇百度seo排名培训 优化
  • 网站建设商seo排名优化培训
  • 动易网站内容管理系统站长工具seo综合查询问题
  • 建立网站的目录结构应注意哪些问题十大品牌营销策划公司
  • 哪些网站可以做详情页seochinaz查询
  • 手机商城建站系统网站建设泰州seo公司
  • 杭州商业空间设计公司seo费用价格
  • 苏州海外建站公司上海app开发公司
  • 公司网站出现空白页网址搜索域名查询
  • 推荐几个设计网站互联网营销师培训费用是多少
  • 学做实体店网站兰州网络优化seo
  • 富阳做网站公司广州谷歌优化
  • 广州哪家网站建设公司好百度自媒体怎么注册
  • 网站优化哪家公司好阿里云域名
  • 互联科技 行业网站芜湖seo
  • 企业门户网站建设5118数据分析平台官网
  • 模板网站建站seo观察网
  • 网站安全狗营销号
  • 广州贸易网站微信平台推广方法
  • 企业单位网站建设内容需要什么seo商学院
  • 重新安装 wordpress西安seo排名收费
  • github网站使用教程百度免费推广有哪些方式
  • 产品宣传推广方式有哪些长沙seo优化价格
  • 网站建设第一品牌 网站设计搜盘 资源网
  • 重庆做汉堡的餐饮公司网站关键词挖掘工具爱站网
  • 影响网站显示度的原因免费个人网站建设
  • 嘉定建设厅网站百度账号登陆
  • 行业电子商务网站有哪些网络营销需要学什么
  • b2b2c网站域名注册新网