解決RestTemplate使用PATCH方法報(bào)錯

之前的開發(fā)過程中遇到過各種各樣的接口對接,有WebService也有Restful的接口,通訊方式也是多種多樣蹦哼。對于模擬HTTP請求,一直是使用HttpClient的要糊。這里順便普及一下Http請求的幾個方法:

(1)GET:通過請求URI得到資源

(2)POST:用于添加新的內(nèi)容

(3)PUT:用于修改某個內(nèi)容纲熏,若不存在則添加

(4)DELETE:刪除某個內(nèi)容

(5)OPTIONS :詢問可以執(zhí)行哪些方法

(6)HEAD :類似于GET, 但是不返回body信息,用于檢查對象是否存在锄俄,以及得到對象的元數(shù)據(jù)

(7)CONNECT :用于代理進(jìn)行傳輸局劲,如使用SSL

(8)TRACE:用于遠(yuǎn)程診斷服務(wù)器

最近的幾個項(xiàng)目都開始使用SpringBoot了,突然想到Spring全家桶里面會不會有一種代碼習(xí)慣更貼近Spring體系的接口交互的方式奶赠?簡單的使用搜索引擎查找一下鱼填,就找到了RestTemplate

RestTemplate:Spring基于HttpClient封裝開發(fā)的一個客戶端編程工具包毅戈,遵循命名約定習(xí)慣苹丸,方法名由 Http方法 + 返回對象類型 組成。

HTTP各種方法對應(yīng) RestTemplate 中提供的方法
DELETE
delete(String, Object...)
GET
getForObject(String,Class<T>, Object...)
getForEntity(String, Class<T>, Object...)
HEAD
headForHeaders(String, Object...)
OPTIONS
optionsForAllow(String,Object...)
POST
postForLocation(String, Object, Object...)
postForObject(String, Object, Class<T>, Object...)
PUT
put(String, Object, Object...)
所有方法
exchange(String, HttpMethod, org.springframework.http.HttpEntity<?>, java.lang.Class<T>, java.lang.Object...)
execute(String, HttpMethod, RequestCallback, ResponseExtractor<T>, Object...)
使用示例竹祷,簡單粗暴谈跛。postFoObject代表用POST方法請求一個對象,三個參數(shù)分別是“接口地址”塑陵、“參數(shù)”感憾、“實(shí)體類”。

    JSONObject params = new JSONObject();
    params.put("cameras", cameras);
    ResponseEntity responseEntity =restTemplate.postForObject("http://localhost/getUser", params, User.class);

在實(shí)際開發(fā)過程中令花,在利用到PATCH方法時(shí)會拋出錯誤:

org.springframework.web.client.ResourceAccessException: I/O error on PATCH request for "http://localhost:8080/test":Invalid HTTP method: PATCH; 
nested exception is java.net.ProtocolException: Invalid HTTP method: PATCH

查閱一翻資料之后發(fā)現(xiàn)阻桅,RestTemplate工廠類的默認(rèn)實(shí)現(xiàn)中,不支持使用PATCH方法兼都,需要將RestTemplate配置類的工廠對象修改為HttpComponentsClientHttpRequestFactory嫂沉,這

public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        return new RestTemplate(factory);
    }

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
//       SimpleClientHttpRequestFactory factory=new SimpleClientHttpRequestFactory();
//      上一行被注釋掉的是Spring自己的實(shí)現(xiàn),下面是依賴了httpclient包后的實(shí)現(xiàn)
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        factory.setConnectTimeout(5000);
        factory.setReadTimeout(5000);
        return factory;
    }
}

另外扮碧,你可能還需要引入httpclient的依賴

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.4.1</version>
</dependency>

參考資料:https://stackoverflow.com/questions/29447382/resttemplate-patch-request

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趟章,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子慎王,更是在濱河造成了極大的恐慌蚓土,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赖淤,死亡現(xiàn)場離奇詭異蜀漆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)咱旱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門确丢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绷耍,“玉大人,你說我怎么就攤上這事鲜侥」邮迹” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵描函,是天一觀的道長病袄。 經(jīng)常有香客問我,道長赘阀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任脑奠,我火速辦了婚禮基公,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宋欺。我一直安慰自己轰豆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布齿诞。 她就那樣靜靜地躺著酸休,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祷杈。 梳的紋絲不亂的頭發(fā)上斑司,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音但汞,去河邊找鬼宿刮。 笑死,一個胖子當(dāng)著我的面吹牛私蕾,可吹牛的內(nèi)容都是我干的僵缺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼踩叭,長吁一口氣:“原來是場噩夢啊……” “哼磕潮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起容贝,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤自脯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嗤疯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冤今,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年茂缚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戏罢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屋谭。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖龟糕,靈堂內(nèi)的尸體忽然破棺而出桐磁,到底是詐尸還是另有隱情,我是刑警寧澤讲岁,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布我擂,位于F島的核電站,受9級特大地震影響缓艳,放射性物質(zhì)發(fā)生泄漏校摩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一阶淘、第九天 我趴在偏房一處隱蔽的房頂上張望衙吩。 院中可真熱鬧,春花似錦溪窒、人聲如沸坤塞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摹芙。三九已至,卻和暖如春宛瞄,著一層夾襖步出監(jiān)牢的瞬間浮禾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工坛悉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伐厌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓裸影,卻偏偏與公主長得像挣轨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子轩猩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容