当前位置:首页 > 行业动态 > 正文

http请求xml发送短信

通过POST请求,设置Content-Type为text/xml,将XML数据作为请求

HTTP请求发送XML短信的流程

准备工作

  • 选择短信服务商:如阿里云、酷盾安全、华为云等,注册账号并开通短信服务。
  • 获取API权限:获取 AppKeyAppSecretAPI KeySignature 等认证信息。
  • 阅读官方文档:确认接口地址、请求方式(POST/GET)、XML模板要求。

构造XML请求报文

短信服务商通常要求严格的XML格式,以下为通用字段示例:

字段名 说明 示例值
To 接收手机号 13800138000
From 短信签名(需审核) XX公司
TemplateId 模板ID(需预审核) SMS_123456
Param 模板参数(JSON格式) {"code":"1234","time":"5"}
SignName 签名名称(部分平台需单独传) XX科技

示例XML

<Request>
    <To>13800138000</To>
    <From>XX公司</From>
    <TemplateId>SMS_123456</TemplateId>
    <Param>{"code":"1234","time":"5"}</Param>
    <SignName>XX科技</SignName>
</Request>

发送HTTP请求

  • 请求方式:通常为 POST
  • URL:服务商提供的API地址(如 https://sms.aliyuncs.com/)。
  • Headers
    • Content-Type: text/xml;charset=utf-8
    • Authorization: APPCODE 123456789(部分平台需签名认证)

Python示例代码

import requests
url = "https://sms.example.com/send"
headers = {"Content-Type": "text/xml;charset=utf-8"}
xml_data = """
<Request>
    <To>13800138000</To>
    <From>XX公司</From>
    <TemplateId>SMS_123456</TemplateId>
    <Param>{"code":"1234","time":"5"}</Param>
</Request>
"""
response = requests.post(url, data=xml_data, headers=headers)
print(response.text)

关键注意事项

问题类型 解决方案
签名错误 检查 AppSecretTimestampNonce 是否按规则生成(如HMAC-SHA256)。
模板审核未通过 登录控制台提交模板,等待审核通过后再调用。
手机号格式错误 确保手机号为11位数字,且符合运营商号段规则。
余额不足 充值或联系服务商解决。

响应处理

服务商返回的XML通常包含以下字段:
| 字段名 | 说明 |
|—————|————————–|
| StatusCode | 状态码(如 OK) |
| Message | 描述信息 |
| BizId | 业务ID(用于查询状态) |
| Code | 厂商自定义状态码(如 200)|

成功响应示例

<Response>
    <StatusCode>OK</StatusCode>
    <BizId>1234567890abcdef</BizId>
    <Message>发送成功</Message>
</Response>

相关问题与解答

问题1:如何测试短信接口?

解答

  1. 使用服务商提供的测试手机号(如阿里云的 13800000000)。
  2. 启用沙箱环境(部分平台支持)。
  3. 发送后检查返回状态和实际接收情况。

问题2:如何处理超时或网络异常?

解答

  1. 设置合理的超时时间(如 requests.post(timeout=5))。
  2. 捕获异常并重试(建议最多重试3次)。
0