Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Api网关和Java实现AWS SNS中的换行_Java_Amazon Web Services_Amazon Sns - Fatal编程技术网

通过Api网关和Java实现AWS SNS中的换行

通过Api网关和Java实现AWS SNS中的换行,java,amazon-web-services,amazon-sns,Java,Amazon Web Services,Amazon Sns,我通过API网关触发AWS SNS JSONObject requestBody = new JSONObject(); requestBody.put("phone_number", receiverNumber); requestBody.put("sender_id", senderAlias); requestBody.put("message_text", messageText); 此JSONObject作为ByteArr

我通过API网关触发AWS SNS

JSONObject requestBody = new JSONObject();
requestBody.put("phone_number", receiverNumber);
requestBody.put("sender_id", senderAlias);
requestBody.put("message_text", messageText);
此JSONObject作为ByteArrayInputStream通过AWS SDK for Java v1发送到api网关。 文本中有“\n”用于创建换行符。但是,sms没有新行,它只是打印\n

在Api网关中,消息是这样提取的:method.request.body.message\u text

如何设置messageText变量以在SMS中打印新行?我尝试用\n或\\n或\\\\n替换它。。也尝试了ASCII,但没有成功

调用

由于这是一个相当复杂的程序,我不能全部显示。它通过Json格式的字符串触发,如下所示:

它必须是一个双后斜杠n,因为这正是代码所需要的。aws集成是一个额外的提供者,因此它必须适应现有的框架。json对象在执行之前看起来像这样。

所以我需要找到一种方法来操纵对象中的字符串。但我不知道怎么做

编辑3: 删除以前的编辑,因为它们没有帮助,也没有针对我现在知道的问题

最后结束这个问题。这是API网关中的一个问题。对象刚好到达网关,\n。这将在SNS服务中起作用。但要触发SNS服务,它将全部放入一个URL中,该URL将\n转换为%5Cn

转型前:

网址:


因此,问题在于URL编码。

多亏了AWS的支持,我现在能够通过api网关发送带有换行符的SMS。 使用URL查询参数是错误的。我把它们都拿走了

我需要一个HTTP头: 内容类型:“application/x-www-form-urlencoded”

然后我使用了这样的消息传递模板,带有passthrough:Never:

#set($message = $input.path('$.message_text'))
#set($phoneNumber = $input.path('$.phone_number'))
Action=Publish&PhoneNumber=$util.urlEncode($phoneNumber)&Message=$util.urlEncode($message)&MessageAttributes.entry.1.Name=AWS.SNS.SMS.SenderID&MessageAttributes.entry.1.Value.DataType=String&MessageAttributes.entry.1.Value.StringValue=Alias
请求中包含我的JSON对象,如下所示:

{
"phone_number": "+4912345678",
"message_text": "Break\nHere",
"sender_id":"Alias"
}

短消息中的换行符可以很好地工作

您确定文本中有实际的换行符,而不是后跟n的斜杠吗?你能举个例子说明你是如何填写
消息文本的吗?(请不要评论有问题的代码)。当然,你是对的。“新行字符\n”具有误导性。只是,我问:那里的实际角色是什么?你是如何计算价值的?字符
\u000a
\u005C
后跟
\u006E
是否为您编辑了答案。希望这有助于澄清。要求您在程序中打印变量
messageText
的单个字符,并向我们展示它们是什么,这是否太过分了?不是JSON对象,不是您发送的消息,也不是您在该程序中用于填充消息的实际变量?字符的unicode值是多少?