我试图向Web服务发出一个简单的POST请求,该请求返回Scala中的一些XML.
似乎Dispatch是用于此任务的标准库,但我找不到它的文档.我在上面链接的主站点详细解释了什么是承诺以及如何进行异步编程,但实际上并没有记录API.有一个周期表 - 看起来有点可怕 - 但它只对那些已经知道该做什么并且只需要提醒隐藏语法的人有用.
似乎Scalaz也有一些HTTP工具,但我也找不到任何文档.
我需要从提供REST接口的Web服务中读取一些JSON数据,以便从我的SPARK SQL代码中查询数据以进行分析.我能够读取存储在blob存储中的JSON并使用它.
我想知道什么是从REST服务读取数据的最佳方式,并像其他任何方式一样使用它DataFrame.
BTW我正在使用,SPARK 1.6 of Linux cluster on HD insight如果这有帮助.如果有人可以共享任何代码片段,我也会很感激,因为我对SPARK环境仍然很新.
我想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)
Run Code Online (Sandbox Code Playgroud)
但设置查询参数给我一个严重的错误:
<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"))
Run Code Online (Sandbox Code Playgroud)
请帮助完全设置请求:HTTPS,重定向,查询参数,标题和POST方法.
还帮助(同步,我希望它这样)执行请求以获取正文(和标题)和分支取决于响应代码(200,301,302,400,500).