如何在Dispatch中获取失败请求的值?

7

当我在Dispatch中发出请求时,我应用Promise并获得以下结果:

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

我该如何获取响应的实际文本?我正在使用Solr,但它仍然返回了包含失败HTTP请求的有价值JSON。

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处理程序——例如,查看我的回答这里,演示如何将标头作为映射访问。


你知道databinder网站的文档是在哪里维护的吗?我很乐意贡献力量,添加像这样的小用例。 - crockpotveggies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接