认证服务调用验证token接口时报错“Netty rest client failed to write request to server ”的解决方案
问题背景
AppGallery Connect(简称AGC)提供的认证服务包含了多种形式的帐号,基本涵盖了世界上最主流的登录系统。除了客户端侧各种不同的登录方式认证外,认证服务还提供了服务器侧的SDK,用于用户管理,验证登录等场景。例如为了保障登录系统的安全,在认证服务认证成功后开发者会收到认证服务下发的一个access token。开发者可以拿着这个token去服务器调用服务器侧Server SDK的接口来验证token的正确性以保障登录的安全。最近我就在调用验证token的接口的时候遇到了报错:Netty rest client failed to write request to server.
这种情况我们该如何解决呢?
解决方法
当我们第一次看到此错误的时候,很容易就会想到是否为网络问题,所以我检查了当前环境的网络配置一级代理情况,发现并没有设置代理,网络也可以正常访问。
然后我又想是否是认证服务的ip不通,所以我找到了server sdk请求的域名,connect-api.cloud.huawei.com。尝试去ping通这个域名。发现域名也是可以ping通的。面对这个现象就有点束手无策了。由于报错发生在sdk内部,所以只能够求助华为的技术专家了。华为的技术专家在看到这个问题的时候开始也是有些没有头绪,但是听说我们的服务器在海外的时候就突然有了想法。原来认证服务的server sdk也是区分站点的。由于我们的项目默认数据存储地为中国,导致如果不在请求之前特别设置数据存储地,所有请求都会发送到中国站点的服务器上。这样跨站点访问很可能就会导致网络问题。于是,我在请求之前设置数据存储地为SG(新加坡站点),netty的问题就解决了。设置的代码如下:
String clientName = "SingaporeSite";
String region= "SG";
AGCClient.initialize(clientName, region);
Initialize方法为server sdk初始化的方法,clientName是我们自己为当前这个实例起的名字,后续便于管理。而region就是我们需要设置的请求服务地了。我们这里设置为新加坡,这样后续对当前实例操作的所有的网络请求就会发送到新加坡站点了。
参考文档:
Server sdk使用入门指导:
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh
相关文章
- 获取PHP文件绝对地址$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)
- SQL SERVER全面优化-------Expert for SQL Server 诊断系列
- 【资料整理】Python - 简单的epoll server代码解读
- mysql server has gone away
- VIEW SERVER STATE permission was denied on object 'server', database 'master'
- 得到application server上所有的logon user
- Sql Server生成测试数据
- SQL SERVER服务器链接连接(即sql server的跨库连接)
- 成功解决500 : Internal Server Error问题
- 成功解决SQL Server软件中出现的18456问题
- win server 2008 r2 iis+php 500错误内部服务器错误。
- sql server 使用链接服务器远程查询
- Sql Server 2008 R2安装教程
- 持续集成(二)环境搭建篇—内网邮件server搭建
- oracle db server 改动主机名时的注意事项
- Could not load the Tomcat server configuration at /Servers/Tomcat v7.0 Server at localhost-config.
- epoll server示例
- JSP(Java Server Pages,即:Java服务器页面