2013-06-09 24 views
8

sprayフレームワークを使用して簡単なHTTPリクエストを作成する必要があります。彼らのWebサイトでいくつかの例を見つけましたが、私にとっては必要ではないAkkaが複雑で複雑になっていました。投稿の投稿をスプレーで送信する

さらに、リクエストのヘッダー(X-Application,content-typeなど)とリクエストの投稿データ(私の場合はJSONのデータ)を記入できる必要があります。

どうすればいいですか?

+0

あなたはアッカがあることを認識しませんスプレーフレームワークの基本的な部分は右でしょうか?それと直接対話する必要はないかもしれませんが、それはスプレーが構築される主要なビルディングブロックです。 – cmbaxter

+0

@cmbaxterとにかく、これを行う方法の簡単な例が必要です。そのため、この時点でakkaを使用しないようにしたいのです。 –

+0

このページは見たことがありますか:http://spray.io/documentation/1.1-M8/spray-clientあなたはそれを効率的に使用するために、まだスプレーの概念のいくつかを理解する必要があります。 – jrudolph

答えて

13

ここは例です。そこアッカ少量のコードになるだろうが、私は私のコメントで述べたように、それはスプレーのために必要ですされています

import spray.httpx.RequestBuilding._ 
import spray.http._ 
import HttpMethods._ 
import HttpHeaders._ 
import MediaTypes._ 
import spray.json._ 
import DefaultJsonProtocol._ 
import spray.httpx.SprayJsonSupport._ 
import akka.actor.ActorSystem 
import spray.io.IOExtension 
import akka.actor.Props 
import spray.can.client.HttpClient 
import spray.client.HttpConduit 
import scala.concurrent.Future 
import scala.util.Failure 
import scala.util.Success 

case class MyObj(str:String, i:Int) 

object SprayExample { 
    implicit val myObjFormat = jsonFormat2(MyObj) 

    def main(args: Array[String]) { 
    import concurrent.ExecutionContext.Implicits._ 

    val obj = MyObj("hello", 1) 
    val req = Post("/some/url", obj) ~> addHeader("X-Foo", "bar") 

    implicit val system = ActorSystem() 
    val ioBridge = IOExtension(system).ioBridge() 
    val httpClient = system.actorOf(Props(new HttpClient(ioBridge))) 

    val conduit = system.actorOf(
     props = Props(new HttpConduit(httpClient, "localhost", 8080)), 
     name = "http-conduit" 
    ) 

    val pipeline = HttpConduit.sendReceive(conduit) 
    val response: Future[HttpResponse] = pipeline(req) 
    response onComplete{ 
     case Failure(ex) => ex.printStackTrace() 
     case Success(resp) => println("success: " + resp.status) 
    } 
    } 
} 

私のビルドファイルは次のようになります。

scalaVersion := "2.10.0" 

resolvers ++= Seq(
    "Scala Tools Repo Releases" at "http://scala-tools.org/repo-releases", 
    "Typesafe Repo Releases" at "http://repo.typesafe.com/typesafe/releases/", 
    "spray" at "http://repo.spray.io/" 
) 


libraryDependencies ++= Seq(
    "io.spray" % "spray-httpx" % "1.1-M7", 
    "io.spray" % "spray-client" % "1.1-M7", 
    "com.typesafe.akka" %% "akka-actor" % "2.1.0", 
    "io.spray" %% "spray-json" % "1.2.5" 
)