如何在httpkit中将Content-Type设置为application/json



我使用httpkit作为http客户端。我尝试了许多解决方案,使标题Content-Type成为application/json,但都失败了。

这是我的代码:

(require '[org.httpkit.client :as http])
(http/post 
  url
  { :query-params {"q" "foo, bar"}
    :form-params {"q" "foo, bar"}
    :headers {"Content-Type" "application/json; charset=utf-8"}})

使用以上代码的Post将获得response status 200,但Content-Typeapplication/x-www-form-urlencoded

如果删除行application/x-www-form-urlencoded,将得到response status 400

附言:我把烧瓶作为网络服务器。

您想要发送什么请求?

  • :query-params将把?q=foo,bar附加到请求url
  • :form-params将使正文q=foo,bar具有内容类型application/x-www-form-urlencoded

这可能超出了需要,但身体也必须是application/json,而且已经是application/x-www-form-urlencoded了。

如果你想要一个json主体,你可以做:

:body (clojure.data.json/write-str {:q "foo,bar"})

我还没有使用httpkit(可以推荐clj-http),但我认为应该使用:body选项而不是:form-params来指定有效载荷,因为后者会强制Content-Typeapplication/x-www-form-urlencoded。考虑到表单参数在HTTP中的工作方式,这是有意义的。

相关内容

  • 没有找到相关文章

最新更新