如何通过第三方短信服务商HTTPS URL发送短信?代码失效求助
解决C# HTTP GET发送SMS的问题
一、代码无法运行的排查方向
- 检查Ozeki网关状态:确认本地或远程的Ozeki SMS Gateway服务已正常启动,且完成账号、短信通道的基础配置(如运营商对接、API密钥验证)
- 网络与权限验证:确保C#程序能访问网关地址,防火墙/杀毒软件未拦截出站请求;核对代码中的用户名、密码、网关端口与Ozeki后台配置完全一致
- 依赖与语法检查:确认项目已引用
System.Net.Http或System.Web相关类库;检查URL拼接、参数转义是否正确(比如特殊字符未转义会导致请求无效) - 捕获错误信息:主动捕获
HttpRequestException或响应状态码(如401未授权、404资源不存在),根据具体错误定位问题
二、添加senderID参数的实现方法
第三方接口要求的senderID参数,可直接在HTTP GET请求的URL中追加,示例代码如下:
using System; using System.Net; class Program { static void Main(string[] args) { var gatewayBaseUrl = "http://your-gateway-ip:port/api?"; var username = "your_account"; var password = "your_password"; var recipient = "+1234567890"; var messageContent = "Test SMS with custom sender ID"; var customSenderId = "YOUR_SENDER_ID"; // 第三方要求的senderID // 拼接带senderID的请求URL,所有参数需做URL转义 var requestUrl = $"{gatewayBaseUrl}username={WebUtility.UrlEncode(username)}&password={WebUtility.UrlEncode(password)}&to={WebUtility.UrlEncode(recipient)}&message={WebUtility.UrlEncode(messageContent)}&sender={WebUtility.UrlEncode(customSenderId)}"; try { using (var client = new WebClient()) { var response = client.DownloadString(requestUrl); Console.WriteLine("SMS发送成功:" + response); } } catch (Exception ex) { Console.WriteLine("发送失败:" + ex.Message); } } }
- 注意:不同网关对senderID参数的命名可能不同(如
sender、from、senderid),请以第三方接口文档为准调整参数名 - 必须用
WebUtility.UrlEncode对所有参数做转义,避免特殊字符破坏请求结构
内容的提问来源于stack exchange,提问作者abdulkareem amoora
相关产品推荐
相关产品推荐

