加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Dispatch 0.9的基本用法

发布时间:2020-12-16 18:59:15 所属栏目:安全 来源:网络整理
导读:我要POST到一个URL,设置查询参数和标题,并将一个原始字符串传递到正文中.然后我想要请求并获取输出字符串,以便我可以将其转换为 JSON.我也想异常处理来响应不同种类的错误(并处理重定向) 但是Dispatch 0.9的记录是非常有限的,打破API的文档版本非常古怪,所以
我要POST到一个URL,设置查询参数和标题,并将一个原始字符串传递到正文中.然后我想要请求并获取输出字符串,以便我可以将其转换为 JSON.我也想异常处理来响应不同种类的错误(并处理重定向)

但是Dispatch 0.9的记录是非常有限的,打破API的文档版本非常古怪,所以我无法提出一个完整的解决方案.我完全被卡住了,所以我问了很多.

这是我可以想出来的,但设置查询参数是奇怪的:

val solr = host("localhost",8983)
val req  = solr / "update" / "json" 
    setQueryParameters( Map( "commit" -> "true")) 
    setHeader( "Content-type","application/json")
    setBody( a)

但设置查询参数给我一个很难的错误:

<console>:14: error: type mismatch;
 found   : scala.collection.immutable.Map[java.lang.String,java.lang.String]
 required: com.ning.http.client.FluentStringsMap
       val req  = solr / "update" / "json"  setQueryParameters( Map( "commit" -> "true"))

请帮助完全设置请求:HTTPS,重定向,查询参数,头文件和POST方法.

还有帮助(同步地,我想要这样)执行请求以获得身体(和标题)和分支根据响应代码(200,301,302,400,500).

解决方法

你不算太远以下内容适用于您的请求定义:

import dispatch._

val params = Map("commit" -> "true")
val headers = Map("Content-type" -> "application/json")

val solr = host("localhost",8983)

val req = solr / "update" / "json" << a <<? params <:< headers

或者,更少的操作性:

val req = url("http://localhost:8983/update/json").POST
  .setBody(a)
  .addQueryParameter("commit","true")
  .addHeader("Content-type","application/json")

如果您想使用HTTPS,请在某处放置一个.secure.

你可以得到这样的承诺(这实际上代表延迟请求操作的结果):

val result = Http(req OK as.String).either

然后使用它,例如:

result() match {
  case Right(content)         => println("Content: " + content)
  case Left(StatusCode(404))  => println("Not found")
  case Left(StatusCode(code)) => println("Some other code: " + code.toString)
}

虽然我同意0.9 documentation在一些地方稀疏,但它确实提供了一个非常有用的解释,说明如何处理具有承诺的异步请求操作.

OP的补充:这一点完成了我的这个答案.这样可以通过简单的阻止方式得到响应.

val response = Http(req)()
val body response.getResponseBody

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读