无法在angular rc2

时间:2016-06-21 18:39:09

标签: angular http-put

我不确定这是一个bug还是我在rc2中做错了什么,但问题是它在旧版本中没有发生。

我有一个http.put请求,我需要设置Content-type ='application / json'。正如我所说,在旧版本中,它工作正常。但是当我将角度升级到最新的rc2时,我开始得到Unsupported Media Type错误。

我在dev工具中检查了http调用以检查发送的内容:

Content-Type:text/plain, application/json

在旧版本中,我只有'application / json'而不是'text / plain'。因此,我认为这是造成错误的原因。

我不明白为什么我的标题定义被追加而不是被覆盖。

以下是我创建http.put调用的方法。

let opt: RequestOptions
let headers: Headers = new Headers
let searchParams: URLSearchParams = new URLSearchParams()

headers.set ('Content-type', 'application/json')
opt = new RequestOptions({            
  search: searchParams,
  headers: headers
})
this._http.put('<any put url>', '',opt)
.subscribe(data => console.log(data))

我已经做过的事情来仔细检查我的怀疑:

  • 我使用rc1版本手动添加'text / plain'来检查它是否是 会抛出一个错误,答案是:是的,它也是如此 错误。
  • 我使用https://plnkr.co/edit/Qxw4pd2VnkkWg4iCXwUD?p=preview创建了一个用来模拟我的傻瓜 场景。它不会抛出错误,但会创建相同的标题 我来了。

这是一个错误吗?

修改

我已经在angular的repo上打开了一个问题,显然它似乎是一个小bug,虽然导致我的情况错误的是“Content-type”中的小写t,它应该是“Content- Ť YPE”。

应该在以后的版本中固定。 问题:https://github.com/angular/angular/issues/9452

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我希望这是RC2中的一个错误。

但是,您可以通过进行一些更改来使您的示例正常工作

  1. 将正文设置为空JSON对象而不是任何空字符串
  2. 不要覆盖内容类型。
  3. 示例:

    this._http.put('https://httpbin.org/put', {})
    .subscribe(data => console.log(data))
    

    而不是

    this._http.put('https://httpbin.org/put', '', headers)
    .subscribe(data => console.log(data))