一次使用IDEA中HTTP Client的經歷

1 開端

HTTP Client是IDEA中自帶的一個插件,用於代替原來的REST Client,打開Tools->HTTP Client->Test RESTful Web Service,會提示REST Client不推薦使用,推薦使用HTTP Client:

在這裏插入圖片描述

然後當然就點擊使用啊,但是,問題來了,一個普通的GET請求都發送不出去????

在這裏插入圖片描述
IDEA的東西估計沒這麼菜吧???

肯定不會這麼菜的。。。

但是爲什麼就是發不出去???

2 嘗試

GET請求對吧,瀏覽器也可以做,於是,使用了瀏覽器進行測試,一點問題都沒有:

在這裏插入圖片描述

沒理由啊,筆者在想,那爲什麼IDEA不行呢??

接着使用了大名鼎鼎的Postman,也是一點問題也沒有:

在這裏插入圖片描述
Postman也沒問題啊,接着試試“情敵”Postwoman,問題來了!

發送不出去,查看了一下F12控制檯,報錯如下:
在這裏插入圖片描述
搜索了一下解決辦法,是跨域資源請求的問題,在Controller類上加上

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

即可,因爲Postwoman默認運行的端口爲3000。

這個註解還可以作用在方法上,起作用的就是對應的方法,這裏是對整個Controller起作用。

另外這裏只使用了最簡單的參數,其他的參數還有origins(同value),allowHeadersexposedHeadersmethodsallowCredentialsmaxAge,具體使用不介紹,加上了以後Postwoman就能正常發送請求了:

在這裏插入圖片描述

3 再次嘗試

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

在這裏插入圖片描述
於是換了一種思路,想再用其他類似插件的方式測試。

所以就想到了VScode,裏面有一個類似的擴展叫REST Client,安裝以後寫了一個普通的GET請求,完全沒問題:

在這裏插入圖片描述
但還是想不到爲什麼IDEA還是不行啊???

還是500 。。。

。。。

但是,反過來想,可能是請求發送不出去,因爲如果是接受到了請求的話,肯定會有日誌記錄的,但是沒有,所以原因可能是請求發送不出去。。。

4 最終答案

一個普通的GET請求爲什麼發送不出去?

到底是爲什麼會返回500?

最後,經過一番痛苦的思考,找到了問題所在:代理!

在這裏插入圖片描述
發送不出去就是因爲設置了本地代理,返回的500,是代理服務器返回的,不是Tomcat返回的。

終於,把代理去掉之後,HTTP Client就可以正常使用了:
在這裏插入圖片描述
沒錯,“真兇”就是代理。

最後終於打消了筆者的誤解,爲什麼IDEA中的HTTP Client會這麼“菜”,連一個普通的GET請求也發送不出去??

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章