项目场景:搭建SpringCloud项目,使用Eureka注册服务发现,配置了Eureka服务、“生产者”服务、“消费者”服务。
问题描述
在“消费者”服务中调用“生产者”服务的api出现以下异常信息:
@Override
2022-08-14 11:14:47.398 ERROR 19408 --- [nio-8001-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] :
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed;
nested exception is java.lang.IllegalStateException: Could not create URI object: Illegal character in hostname at index 37:
http://windows10.microdone.cn127.0.0.1:7901/user/sayHaha] with root cause
java.net.URISyntaxException: Illegal character in hostname at index 37: http://windows10.microdone.cn127.0.0.1:7901/user/sayHaha
at java.net.URI$Parser.fail(URI.java:2848) ~[na:1.8.0_161]
at java.net.URI$Parser.parseHostname(URI.java:3395) ~[na:1.8.0_161]
……
原因分析:
1、查看前半段异常信息java.net.URISyntaxException: Illegal character in hostname at index 37
,表明URL
地址出现了语法错误。
2、再看看后半段的URL
地址:http://windows10.microdone.cn127.0.0.1:7901/user/sayHaha,很明显这里 windows10.microdone.cn
的地址是错误的,因为我的URL地址中并没有添加该地址字符串,也就是说在我使用“消费者”服务调用“生产者”服务器的api接口时,遭到了计算机内某些程序的劫持
,从而修改了地址,导致无论是用api测试工具还是用网页测试地址,都会被修改成错误地址,使得无法正常访问我要的地址。
3、通过百度查询“windows10.microdone.cn
”得知该地址是由《银联安全控件》的所作所为,即我们在使用网上银联是安装的安全检测控件。
4、通过测试发现,该控件是一个“流氓”软件,为了保证安全支付环境,该控件会反复启动,难以结束进程。所以我的主要解决方向是一卸载该控件。
解决方案:
方案一、卸载《银联安全控件》
1、打开任务管理器。
2、找到UPSecurityInput。
3、鼠标右键“打开文件所在位置”。
4、点击uninst.exe卸载控件。
5、卸载完后,删除UPSecurityInpt.exe程序。
方案二、修改host文件
来源:Hosts 文件被修改
以下是我修改的地方:
方案三
方案四
总结:方案三四我使用了无效果,最终按方案一二解决该问题。