This is a bare bones http client for scala which wraps HttpURLConnection
import scalaj.http.Http
Http("http://foo.com/search").param("q","monkeys").asString
Http.post("http://foo.com/add").params("name" -> "jon", "age" -> "29").asString
import scalaj.http.{Http, Token}
val consumer = Token("key", "secret")
val token = Http("http://foursquare.com/oauth/request_token").param("oauth_callback","oob").oauth(consumer).asToken
println("Go to http://foursquare.com/oauth/authorize?oauth_token=" + token.key)
val verifier = Console.readLine("Enter verifier: ").trim
val accessToken = Http("http://foursquare.com/oauth/access_token").oauth(consumer, token, verifier).asToken
println(Http("http://api.foursquare.com/v1/history.json").oauth(consumer, accessToken).asString)
Http("http://foo.com").{responseCode, asString, asXml, asBytes, asParams}
val scalaj_http = "org.scalaj" %% "scalaj-http" % "0.2"
<dependency>
<groupId>org.scalaj</groupId>
<artifactId>scalaj-http_${scala.version}</artifactId>
<version>0.2</version>
</dependency>
import java.io.InputStreamReader
import net.liftweb.json.JsonParser
Http("http://foo.com"){inputStream =>
JsonParser.parse(new InputStreamReader(is))
}
Http.postData(url, data).header("content-type", "application/json").responseCode
Http.multipart(url, MultiPart("photo","headshot.png", "image/png", fileBytes)).responseCode
Http("https://localhost/").option(HttpOptions.allowUnsafeSSL).asString
Http(url).option(HttpOptions.method("HEAD")).asString
These are set to 30,000 and 60,000 milliseconds respectively by default
Http(url).option(HttpOptions.connTimeout(1000)).option(HttpOptions.readTimeout(5000)).asString
The .option()
method takes a function of type HttpURLConnection => Unit
so you can manipulate the connection in whatever way you want before the request executes.
- Retrieve triple of (statuscode, responseheaders, content)
- Handle other http methods better (PUT,HEAD,DELETE)