2013-10-07 77 views
4

有一些关于在调度http://dispatch.databinder.net/Combined+Pages.html中发送post请求的文档,但还不清楚。什么是myRequest和myPost?发送一个自定义的POST https请求(+ cookie,+头文件)

我想发送一个https发布请求+通过标题手动添加一些cookie +添加一些海关头像表单数据等,然后通过阅读标题和cookie读取响应。

我只知道如何发送POST请求准备网址:

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

我该怎么做?

回答

9

调度建立在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 

我经常发现调度文档难走。对于所有不同的调度运营商的快速概述,请参阅: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是调度的一部分,并调用底层RequestBuilder上的setMethod。有关更多详细信息,请参阅dispatch.MethodVerbs

+0

我认为这是相反的:<:<添加标题,<<表单参数。 –

+0

@Alex,我很确定我是对的。但是你的评论是我不喜欢所有那些疯狂派遣运营商的原因之一。 :-)在某些情况下,我认为直接调用'RequestBuilder'上的方法会更清楚,比如:'req.addHeader(“x-custom1”,“val1”)'。 – user24601