在调度中发送自定义POST https请求(+ cookies,+ headers)

时间:2013-10-07 04:25:10

标签: scala http cookies scala-dispatch

有一些关于在发送http://dispatch.databinder.net/Combined+Pages.html中发送发布请求的文档,但目前尚不清楚。那里有myRequest和myPost是什么?

我想发送https帖子请求+通过标题手动添加一些Cookie +添加一些海关标题,如表单数据等,然后通过阅读标题和Cookie来阅读响应。

我只知道如何准备发送帖子请求的网址:

val url = host(myUrl + "?check=1&val1=123").secure

接下来我该怎么做?

1 个答案:

答案 0 :(得分:9)

Dispatch建立在Async Http Client之上。因此,示例中为myRequest

 val myRequest = url("http://example.com/some/path")

com.ning.http.client.RequestBuilder

POST上调用RequestBuilder方法会将请求转换为POST请求。这就是myPost示例中发生的事情:

def myPost = myRequest.POST

我经常发现Dispatch文档难以理解。有关所有各种Dispatch运算符的快速概述,请参阅:Periodic Table of Dispatch Operators

如果您询问如何构建POST请求并添加自定义表单参数,您可能希望使用<<(values)运算符,如下所示:

val params = Map("param1" -> "val1", "param2" -> "val2") 
val req = url("http://www.example.com/some/path" <<(params)

同样,如果您想添加一些自定义标题,可以使用<:<(map)运算符,如下所示:

val headers = Map("x-custom1" -> "val1", "x-custom2" -> "val2") 
val req = url("http://www.example.com/some/path" <<(params) <:<(headers)

更新:实际上,POST上没有RequestBuilder方法。对POST的调用是Dispatch的一部分,并在基础setMethod上调用RequestBuilder。有关详细信息,请参阅dispatch.MethodVerbs