Scala HTTP Client
在開發Scala的專案的時候,當我們需要使用HTTP Client時,有許多不同的選擇:- Dispatch — Library for asynchronous HTTP interaction. It provides a Scala vocabulary for Java’sasync-http-client.
- Netcaty - Simple net test client/server for Netty and Scala lovers.
- Scalaxb — An XML data-binding tool for Scala that supports W3C XML Schema (xsd) and Web Services Description Language (wsdl) as the input file.
- Spray — Actor-based library for http interaction.
- Tubesocks — Library supporting bi-directional communication with websocket servers.
- scalaj-http – Simple scala wrapper for HttpURLConnection (including OAuth support).
- Finch.io — Purely Functional REST API atop of Finagle.
- Newman — A REST DSL that tries to take the best from Dispatch, Finagle and Apache HttpClient. See here for rationale.
我個人在幾個Projects中,是使用Dispatch這個輕量的Asynchronous HTTP Client,並搭配json4s來處理Json。
在Dispatch中如何處理Gzip Encoding?
Dispatch簡單好用也很輕量,但就因為太輕量了,並沒有支援Gzip的處理,今天這篇就來解釋我在使用Dispatch時是怎麼處理Gzip Encoding的。
Gzip Json Response
使用Dispatch,可以透過很簡單的就取得HTTP response的結果:
但若是想handle gzip的response呢?
這邊我們依照as.String的實作方式,寫了一個GzipJson,來判斷回傳的Header中的Content-Encoding是不是Gzip,然後再做相對應的處理:
在使用GzipJson處理Dispatch的response就只要像下面這樣的用方即可:
Gzip Json Request
但是在Request中要傳入Gzip的payload呢?
這邊實作了GzipHelper,並定義implicit function來讓使用上更方便:
實際上傳送gzip的payload方式如下:
這邊實作了GzipHelper,並定義implicit function來讓使用上更方便:
實際上傳送gzip的payload方式如下:
沒有留言:
張貼留言