为RESTful服务编码URI

5
我正在尝试使用Ionic 2(javascript)调用一个带有电子邮件地址的Java GET RESTful服务。它可以正常工作,但是当我添加一个点(例如.com)到电子邮件地址时,当它到达服务时就会丢失所有点后面的字符。
请问如何对URI进行编码以便将电子邮件地址发送到服务?
我正在使用:
'/list/email/' + encodeURIComponent(email)
但如果电子邮件地址为:email@domain.com,则到达服务时变成了email@domain。
我已经尝试过:
'/list/email/' + email
'/list/email/' + encodeURI(email)
'/list/email/' + encodeURIComponent(email)
所有都得到相同的结果。
谢谢。

如果您尝试对该字符串进行Base64编码并在服务器上解码,会怎样呢?或者这不是一个选项吗? - Lukas Abfalterer
是的,这就是为什么我认为它需要以某种方式进行编码的原因。 - Richard
没有问题,我来帮忙。 - Lukas Abfalterer
但是为什么服务器会丢弃 . 之后的内容呢...有人知道吗? - Rajat Bhadauria
我认为服务器认为有人请求文件并删除了“.”。 - Lukas Abfalterer
显示剩余8条评论
3个回答

1
解决方法很简单,只需在URL末尾添加'/'即可。
return this.http.get(this.BASE_URI + '/list/email/' + email + '/')

哦,那比想象中简单多了。 - Rajat Bhadauria

1

您可以尝试将电子邮件地址编码为Base64字符串。

var encodedData = window.btoa("test@test.com"); // encode a string
var decodedData = window.atob(encodedData); // decode the string

这就是如何在服务器上解码Base64字符串。
byte[] valueDecoded= Base64.decodeBase64(bytesEncoded);
System.out.println("Decoded value is " + new String(valueDecoded));

谢谢Lukas。我能在服务器上用Java解码字符串吗? - Richard
当然可以在服务器上解码字符串,这个问题已经在这个线程中得到了回答:https://dev59.com/DXRB5IYBdhLWcg3w6bYE - gdyrrahitis

0

您可以使用:

/somepath/{variable:.+}

1
嗨Van,谢谢你的回答,但我不明白。我正在使用JavaScript函数进行操作,你所使用的语法对我来说没有意义? - Richard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接