如何使用 RestTemplate 进行 GSM 编码

How to GSM Encode using RestTemplate

我在为基于 SMS 的产品编码“#”字符时遇到问题。 SMS 使用 GET 请求发送到 SMS 网关提供商提供的 API。我需要发送一条简单的消息 "Dial #121#",但是 Phone 上收到的短信没有显示“#”字符。

该应用程序基于 Spring Boot 构建,我正在使用 RestTemplate 发出请求

RestTemplate restTemplate = new RestTemplate();
String message = "Dial #121#"; //example message
String baseUri = "http://api.example.com?msisdn=1234567&message=" + message;
ResponseEntity<String> response = restTemplate.getForEntity(baseUri, String.class);

Phone 上的输出:拨号

预期输出:拨#121#

请协助。

我想你先编码你的 URL:

RestTemplate restTemplate = new RestTemplate();
String message = "Dial #121#"; //example message
String baseUri = "http://api.example.com?msisdn=1234567&message={message}";
URI expanded = new UriTemplate(baseUri ).expand(message);
baseUri = URLDecoder.decode(expanded.toString(), "UTF-8");
ResponseEntity<String> response = restTemplate.getForEntity(baseUri, String.class);

问题已通过使用 org.apache.httpcomponents:httpclient http clinet 而不是 Sprint Rest 模板得到解决