发送包含url中html的字符串而不删除特殊字符

时间:2019-01-01 01:26:19

标签: angular

我正在尝试发送一条消息,该消息是一个包含图标的字符串,该图标是html元素,但是当我在Web服务url中传递它时,它将删除所有特殊字符。有没有办法在不删除这些特殊字符的情况下将其保留为字符串?

我要传递的字符串是

      var body= "hello <img src="/assets/smile.png">";

Web服务网址为:

  return this.http.get('  http://localhost:44435/Projet/AddMsessage?body=' +body+ '&idSender=' + idSender + '&idDiscussion=' + idDiscussion);

但是当我执行Web服务时,它变成了这样的问题:

http://localhost:44435/Projet/AddMsessage?body=halo%20%3Cimg%20src%3D%22%2Fassets%2Fsmile.png%22%3E%20&idSender=1&idDiscussion=1

它删除<,/,“,>字符

1 个答案:

答案 0 :(得分:0)

您应该使用HttpClient#get的第二个参数来传递URL参数。有关更多信息,请参见the official documentation

您的代码变为:

return this.http.get('http://localhost:44435/Projet/AddMsessage', {
  params: new HttpParams()
    .set('body', body)
    .set('idSender', idSender)
    .set('idDiscussion', idDiscussion)
});

如果不这样做,如果您的参数值包含诸如?&之类的字符,则它们会弄乱您的URL,因为Angular无法知道每个参数在哪里“停止”

但是,对特殊字符进行url编码是完全正常的。 <变成%3C,依此类推。