2

私は scala ディスパッチ ライブラリを使用して、Lift 内のサーバーにポスト リクエストを送信したいと考えています。

投稿リクエストを外部サーバーに送信して情報を取得し、この情報を Web アプリで使用したいと考えています。

これどうやってするの?

4

2 に答える 2

0

REST 呼び出しをサーバーにディスパッチするスニペットを次に示します。

    val http = new Http
    val call = parse(event.call)
    val verbspec = (call \ "verb").values toString
    val urlspec = (call \ "url").values toString
    val namespec = (call \ "username").values toString
    val pwspec = (call \ "password").values toString

    val req = url(urlspec).as(namespec, pwspec) <:< Map("Content" -> "application/json")

    val (status: Int, contentWrap,  headers) = verbspec match {
      case "GET" => {
        http x (( req >:> identity ) {
          case (200, _, Some(thing),  out) => {
            val resp = fromInputStream(thing.getContent()).getLines.mkString
            (200, Some(resp), out())
          }
          case (badCode, _, _, out) => (badCode, None, out())
        })
      }
      case "POST" => {
        http x (( req.POST << (event.payload) >:> identity ) {case (status,  _, _, out) => (status,  None, out()) })
      }
      case "PUT" => {
        http x (( req.PUT <<< (event.payload) >:> identity ) {case (status,  _, _,  out) => (status,  None, out()) })
      }
      case _ => {
        EventHandler.error(this, "Bad verb specified")
        (000,  None, Map.empty)
      }
    }

どこ:

event.call-> 呼び出しを指定する json

event.payload-> PUT および POST の json ペイロード

http x-> http://databinder.net/dispatch-doc/#dispatch.Http

>:> -> http://databinder.net/dispatch-doc/#dispatch.HandlerVerbs

<<, <<<, <:< -> http://databinder.net/dispatch-doc/#dispatch.RequestVerbs

これは、Lift JSON を使用して呼び出し仕様を解析し、Akka アクターで実行します。ステータス、ヘッダー、およびコンテンツが呼び出し元のアクターに返されます。

于 2011-12-10T02:27:49.763 に答える
0

Lift GitHub Wiki ( Assembla oneに置き換えられています) には、探しているものに沿ったDispatch の使用に関する記事があります。

于 2010-04-17T23:51:48.140 に答える