3

我正在尝试使用用 Perl (OTRS) 编写的服务的 Web API。数据以 JSON 格式发送。

JSON 结构中的一个字符串值包含一个井号,显然它在 JSON 中用作注释字符。这会导致解析错误:

解析 JSON 字符串时字符串意外结束

我找不到如何转义字符以成功解析字符串。明显的斜线转义导致:

字符串中的非法反斜杠转义序列

任何想法如何逃脱它?

更新: 我尝试使用的 URL 看起来像这样(简化但仍然导致错误):

http://otrs.server.url/otrs/json.pl?User=username&Password=password&Object=TicketObject&Method=ArticleSend&Data={"Subject":"[Ticket#100000] Test Ticket from OTRS"}
4

2 回答 2

7

使用Uri::escape

use URI::Escape;
my $safe = uri_escape($url);

有关可能不安全的字符列表,请参阅rfc1738

于 2011-04-07T10:03:20.550 回答
5

井号 ,在 URLs#中具有特殊含义,在 JSON 中没有。您的 URL 可能在删除服务器看到它之前就被截断了:

http://otrs.server.url/otrs/json.pl?User=username&Password=password&Object=TicketObject&Method=ArticleSend&Data={"Subject":"[Ticket

这意味着远程服务器在Data. 解决方案是在将参数粘贴在一起形成 URL 之前对参数进行 URL 编码;eugene y 告诉你如何做到这一点。

于 2011-04-07T10:08:18.833 回答