一次使用IDEA中HTTP Client的经历

1 开端

HTTP Client是IDEA中自带的一个插件,用于代替原来的REST Client,打开Tools->HTTP Client->Test RESTful Web Service,会提示REST Client不推荐使用,推荐使用HTTP Client:

一次使用IDEA中HTTP Client的经历

然后当然就点击使用啊,但是,问题来了,一个普通的GET请求都发送不出去????

一次使用IDEA中HTTP Client的经历
IDEA的东西估计没这么菜吧???

肯定不会这么菜的。。。

但是为什么就是发不出去???

2 尝试

GET请求对吧,浏览器也可以做,于是,使用了浏览器进行测试,一点问题都没有:

一次使用IDEA中HTTP Client的经历

没理由啊,笔者在想,那为什么IDEA不行呢??

接着使用了大名鼎鼎的Postman,也是一点问题也没有:

一次使用IDEA中HTTP Client的经历
Postman也没问题啊,接着试试“情敌”Postwoman,问题来了!

发送不出去,查看了一下F12控制台,报错如下:
一次使用IDEA中HTTP Client的经历
搜索了一下解决办法,是跨域资源请求的问题,在Controller类上加上

@CrossOrigin(value = "http://localhost:3000")

即可,因为Postwoman默认运行的端口为3000。

这个注解还可以作用在方法上,起作用的就是对应的方法,这里是对整个Controller起作用。

另外这里只使用了最简单的参数,其他的参数还有origins(同value),allowHeadersexposedHeadersmethodsallowCredentialsmaxAge,具体使用不介绍,加上了以后Postwoman就能正常发送请求了:

一次使用IDEA中HTTP Client的经历

3 再次尝试

但是IDEA中的HTTP Client还是不行啊,就最最最普通的GET请求,还是返回500:

一次使用IDEA中HTTP Client的经历
于是换了一种思路,想再用其他类似插件的方式测试。

所以就想到了VScode,里面有一个类似的扩展叫REST Client,安装以后写了一个普通的GET请求,完全没问题:

一次使用IDEA中HTTP Client的经历
但还是想不到为什么IDEA还是不行啊???

还是500 。。。

。。。

但是,反过来想,可能是请求发送不出去,因为如果是接受到了请求的话,肯定会有日志记录的,但是没有,所以原因可能是请求发送不出去。。。

4 最终答案

一个普通的GET请求为什么发送不出去?

到底是为什么会返回500?

最后,经过一番痛苦的思考,找到了问题所在:代理!

一次使用IDEA中HTTP Client的经历
发送不出去就是因为设置了本地代理,返回的500,是代理服务器返回的,不是Tomcat返回的。

终于,把代理去掉之后,HTTP Client就可以正常使用了:
一次使用IDEA中HTTP Client的经历
没错,“真凶”就是代理。

最后终于打消了笔者的误解,为什么IDEA中的HTTP Client会这么“菜”,连一个普通的GET请求也发送不出去??

一次使用IDEA中HTTP Client的经历

上一篇:c#开发移动APP-Xamarin入门剖析


下一篇:vue.config.js中vue的配置