我正在尝试发出获取请求以检索字符串
当我使用
时retrieve : Task.Task Http.Error String
retrieve = getString "http://api.endpoint.com"
一切正常。
另一方面,如果我使用
retrieve : Task.Task Http.Error String
retrieve = get Json.Decode.string "http://api.endpoint.com"
http请求完成,但链接的任务不会被执行。
我的问题是:上述两种方法有什么区别?我第二个做错了吗?如何调试?
答案 0 :(得分:4)
getString
以String
的形式返回get请求的响应。 get
使用JSON解码器并在get请求的响应上运行它。因此,如果您提供Json.Decode.string
,它将期望响应中包含Json编码的字符串。所以它期望响应中有额外的双引号。
如果您的http请求失败,最好的调试方法是查看您获得的错误类型。在这种情况下,您可能会获得UnexpectedPayload
,因为请求成功,但解码器失败。