首页 > 解决方案 > 如何通过 VB.NET 发送短信

问题描述

我尝试
使用 textlocal 发送短信。这
是我尝试过的代码

Public Function SendSms(sender As Object, e As EventArgs) Handles Button1.Click
    Dim apikey = txtAPI.Text
    Dim message = txtMsg.Text
    Dim numbers = txtNum.Text
    Dim strPOST As String
    Dim senderName = txtSend.Text
    Dim url As String = "https://api.textlocal.in/send/?"

    strPOST = url + "apikey=" + apikey _
    + "&numbers=" + numbers _
    + "&message=" + WebUtility.UrlEncode(message) _
    + "&sender=" + sender

    Dim request As WebRequest = WebRequest.Create(strPOST)
    request.Method = "POST"
    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(strPOST)
    request.ContentType = "application/x-www-form-urlencoded"
    request.ContentLength = byteArray.Length
    Dim dataStream As Stream = request.GetRequestStream()
    dataStream.Write(byteArray, 0, byteArray.Length)
    dataStream.Close()

    Dim response As WebResponse = request.GetResponse()
    dataStream = response.GetResponseStream()
    Dim reader As New StreamReader(dataStream)
    Dim responseFromServer As String = reader.ReadToEnd()
    Console.WriteLine(responseFromServer)
    Console.ReadLine()

    reader.Close()
    dataStream.Close()
    response.Close()

    If responseFromServer.Length > 0 Then
        Return responseFromServer
    Else
        Return CType(response, HttpWebResponse).StatusDescription
    End If
End Function

它是说没有为字符串“ https://api.textlocal.in/send/?a ”定义运算符'+'并输入'Button

标签: vb.net

解决方案


在此代码sender中是引发事件的 Button:

Public Function SendSms(sender As Object
                        ^^^^^^

这不是发送消息的人的电话号码。在这一行替换sender为:senderName

strPOST = url + "apikey=" + apikey _
+ "&numbers=" + numbers _
+ "&message=" + WebUtility.UrlEncode(message) _
+ "&sender=" + sender
               ^^^^^^^

除非您确切知道它在做什么,否则不要+用于连接 vb 中的字符串

用于&连接字符串,但在这种情况下,我建议您使用字符串格式


推荐阅读