【发布时间】:2015-06-17 09:58:55
【问题描述】:
我是 Scala 和 Dispatch 的新手,我正在尝试发送一个 POST 请求,但从昨天开始我无法找出为什么这不起作用。
首先,我为 GET 请求创建了一个运行良好的方法,代码如下:
def request(URL: String): String = {
val service = url(URL).GET
var ret = "{\"error\":0}"
val result = Http(service).either.map {
case Left(error) => {
}
case Right(response) => {
if (response.getStatusCode == 200)
ret = response.getResponseBody
else
ret = "{\"error\":" + response.getStatusCode + "}"
}
}
Await.result(result, 10 seconds)
ret
}
现在我正在尝试对 POST 请求做同样的事情,如下所示:
def request(URL: String): String = {
val service = url(URL).POST.setContentType("application/json", "UTF-8").addParameter("login", "root").addParameter("password", "root")
var ret = "{\"error\":0}"
val result = Http(service).either.map {
case Left(error) => {
}
case Right(response) => {
if (response.getStatusCode == 200)
ret = response.getResponseBody
else
ret = "{\"error\":" + response.getStatusCode + "}"
}
}
Await.result(result, 10 seconds)
ret
}
我尝试了不同的语法,使用“
有什么想法吗?谢谢
编辑
我尝试删除 setContentType 并替换
val service = url(URL).POST.setContentType("application/json", "UTF-8").addParameter("login", "root").addParameter("password", "root")
由
val service = url(URL).POST.addParameter("login", "root").addParameter("password", "root")
但这仍然不起作用。
编辑 2
我需要将 Content-Type 设置为 multipart/form-data,我做了类似的事情:
val service = url(URL).POST.setHeader("Content-Type", "multipart/form-data;charset=utf-8").addParameter("login", "root").addParameter("password", "root")
这是消费格式,但现在我得到的是 400 HTTP 错误...
【问题讨论】:
-
您是要在查询字符串中还是在帖子正文中发送这些参数?还有为什么在不发送 json 时将内容类型设置为 application/json。
-
我正在尝试将它们发送到帖子正文。我虽然这是必要的,因为我正在接收 json,但可能不是。
-
不设置内容类型试一试。该标头告诉接收服务器正文中的数据类型。如果它与实际存在的不匹配,则可能会导致问题。
-
@Charrette 你试过没有内容类型吗?
-
我编辑了我的帖子,仍然无法再次处理 415 http 错误