如何在cordovaHTTP插件请求中设置Content-Type标头

时间:2015-09-30 16:29:54

标签: cordova cordova-plugins

我正在尝试使用cordovaHTTP插件并在我的POST api调用中,虽然我已将Content-Type标头设置为application/json但我可以看到内容是以application/x-www-form-urlencoded格式发送,请求标头中不存在Content-Type标头。

使用样本:

cordovaHTTP.post("url/to/method",
 {
   "email": "ali@aliha.me"
 },
 {
   "Content-Type": "application/json"
 },
 function (result) {
   alert('success');
 },
 function (error) {
   alert('error');
 });

在服务器api中我看到:

RAW BODY
email=ali%40aliha.me

如何可以设置Content-Type标题?

注意:这种设置标头的方法适用于Authorization标头等其他标头。

2 个答案:

答案 0 :(得分:1)

插件中没有提到它会根据设置的“Content-Type”自动对请求体进行编码。你需要自己做。

此外,似乎没有直接的方法在请求正文中发送数据而未指定key.value对。

这是来自插件文档

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
   On Error Resume Next
   Range("A1") = DateClicked
   Unload Me
End Sub

你可以用这种方式对json字符串进行编码,但你必须想办法在请求体中发送它

/**
   * Write the values in the map as form data to the request body
   * <p>
   * The pairs specified will be URL-encoded in UTF-8 and sent with the
   * 'application/x-www-form-urlencoded' content-type
   *
   * @param values
   * @return this request
   * @throws HttpRequestException
   */
  public HttpRequest form(final Map<?, ?> values) throws HttpRequestException {
    return form(values, CHARSET_UTF8);
  }

答案 1 :(得分:1)

此插件尚不支持Content-Type方法中的post标题。
我使用亲爱的forked repository brendonparker相反,它有一个postJson方法用于发送内容类型为application / json的发布请求。