若依-调用短信接口
AI-摘要
KunKunYu GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
1、接口描述
http://50.58.187.80:50001/sms.aspx?action=send&userid=11&account=WJGA&password=wjga1234&mobile=13915890092&content=%E6%B5%8B%E8%AF%95%E5%86%85%E5%AE%B9&sendtime=&extno=
2、依赖引入
hm-manage/pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
引入这个是为了用WebClient方法。
3、新增配置
hm-admin/src/main/resources/application.yml
# 短信配置
sms:
url: http://50.58.187.80:50001/sms.aspx
userid: 11
account: WJGA
password: wjga1234
action: send
4、构造请求体
这边用到的是.build()直接构造,如果用.encode(),汉字会被解析为UTF-8的编码格式,不是我们想要的。
String url = UriComponentsBuilder.fromHttpUrl("http://50.58.187.80:50001/sms.aspx")
.queryParam("action", "send")
.queryParam("userid", "11")
.queryParam("account", "WJGA")
.queryParam("password", "wjga1234")
.queryParam("mobile", "13915890092")
.queryParam("content", "哈哈哈")
.queryParam("sendtime", "")
.queryParam("extno", "")
//.encode(StandardCharsets.UTF_8) // 显式指定编码格式
.build()
.toUriString();
5、发送请求
这边直接创建了一个SmsService专门用来处理短信。
package com.hm.manage.utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.util.UriComponentsBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import reactor.core.publisher.Mono;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.StringReader;
@Slf4j
@Service
public class SmsService {
@Value("${sms.url}")
private String smsUrl;
@Value("${sms.userid}")
private String userId;
@Value("${sms.account}")
private String account;
@Value("${sms.password}")
private String password;
@Value("${sms.action}")
private String action;
public SmsService(
@Value("${sms.url}") String smsUrl,
@Value("${sms.userid}") String userId,
@Value("${sms.account}") String account,
@Value("${sms.password}") String password,
@Value("${sms.action}") String action) {
this.smsUrl = smsUrl;
this.userId = userId;
this.account = account;
this.password = password;
this.action = action;
}
// 创建SmsService的无参构造
public SmsService() {
this.smsUrl = smsUrl;
this.userId = userId;
this.account = account;
this.password = password;
this.action = action;
}
public String sendSms(String mobile, String content) {
// 构建请求URL并自动编码参数
String url = UriComponentsBuilder.fromHttpUrl(smsUrl)
.queryParam("action", action)
.queryParam("userid", userId)
.queryParam("account", account)
.queryParam("password", password)
.queryParam("mobile", mobile)
.queryParam("content", content)
.queryParam("sendtime", "")
.queryParam("extno", "")
.build()
.toUriString();
log.info("------发送短信请求URL:{}", url);
// 发送GET请求并获取响应
String block = WebClient.create()
.get()
.uri(url)
.retrieve()
.bodyToMono(String.class)
.block();
return parseXMLString(block);
}
public String parseXMLString(String xmlString) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xmlString));
Document doc = builder.parse(is);
// 现在你可以使用doc对象来访问XML结构,例如:
NodeList returnstatus = doc.getDocumentElement().getElementsByTagName("returnstatus");
for (int i = 0; i < returnstatus.getLength(); i++) {
System.out.println("returnstatus: " + returnstatus.item(i).getTextContent());
}
return returnstatus.item(0).getTextContent();
//System.out.println("Root element :" + doc.getDocumentElement().getNodeName().getBytes("returnstatus")[0]);
} catch (Exception e) {
e.printStackTrace();
}
return xmlString;
}
}
6、解析返回结果
解析返回结果见解析返回结果见SmsService类的parseXMLString方法。该方法将响应的XML字符串转换为Document对象,并提取出returnstatus标签的文本内容,然后返回该内容作为解析结果。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 山山
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果