7

当我在 Dispatch 中提出请求时,我应用 Promise 并得到以下信息:

Left(dispatch.StatusCode: Unexpected response status: 400)

如何获得响应的实际文本?我正在使用 Solr,它仍然返回有价值的 JSON 以及失败的 HTTP 请求。

4

1 回答 1

10

看起来您已经编写了如下内容:

Http(url OK as.String)

OK是提供您在此处看到的简单错误处理的原因。您可以使用>更直接地获得结果。例如,如果你这样写:

Http(url("http://google.com/") OK as.String).either()

您将获得以下信息(至少目前):

Left(dispatch.StatusCode: Unexpected response status: 301)

但是,如果您进行以下小改动:

Http(url("http://google.com/") > as.String).either()

您将获得重定向页面的完整正文:

res1: Either[Throwable,String] = 
Right(<HTML><HEAD><meta http-equiv="content-type" ...

如果您想对响应做一些更有趣的事情,您可以编写自己的asWhatever处理程序——例如,请参阅我的答案了解如何以映射的形式访问标题。

于 2013-02-18T18:41:20.643 回答