본문 바로가기
VB.net

에러 발생 시 문자 발송하는 로직(URL이용)

by 호야호잇 2019. 12. 4.

Private Sub SendException(ByVal 프로그램명 As String)
        Try
            Dim Sender, ToCellPhoneNum, SendMsg As String
            Sender = "01063485390"
            ToCellPhoneNum = "01063485390;01062426051;01093847722;01036363026"  '발송하는휴대폰번호가 2개이상일 경우 휴대폰번호 사이에 ;(세미콜론)이 들어감
            SendMsg = $"[시스템통보] {vbNewLine}- 시스템명: {프로그램명}{vbNewLine}- 오류내용: 종료{vbNewLine}-오류시간 : {Now}"

            Dim E_ToCellPhoneNum, E_SendMsg As String

            E_ToCellPhoneNum = Uri.EscapeDataString(ToCellPhoneNum) '인코딩
            E_SendMsg = Uri.EscapeDataString(SendMsg) '인코딩

            Dim DefaultURL As String = "http://114.svctop.com/SMS.aspx?__VIEWSTATE=%2FwEPDwUJMzUwODk5NjgzD2QWAgIDD2QWBgIFDxYCHglpbm5lcmh0bWwFFzAxMDYyNDI2MDUxLDAxMDYzNDg1MzkwZAIJDxYCHwAFR1vsi5zsiqTthZwt7Jik66WY7Ya167O0XQ0K67O07J2064qU7IOB64u0IOuPmeq4sO2ZlCDtlITroZzqt7jrnqgg7KKF66OMZAINDxYCHgRUZXh0BUw8ZGl2IGNsYXNzPSdzdHlsZTUnPkVycm9yIDAxMDYyNDI2MDUxLDAxMDYzNDg1MzkwIOuwnOyGoSDsl5Drn6whITxici8%2BPC9kaXY%2BZGT4PATQV5LGFbIIKeXWKf3%2FzJuk1Q%3D%3D&__VIEWSTATEGENERATOR=3995FEA5&__EVENTVALIDATION=%2FwEWBwKnutaUBgKu35naAwKPuYW%2BBwKF%2B%2FqxCwKJrqqqDQKrmr31CQKct7iSDDyjUIBYbnCsauNF2Ig07drZuBfi&hdTo=&hdFrom=&txtTo="
            Dim SendText As String = DefaultURL & E_ToCellPhoneNum & "&txtSender=" & Sender & "&txtContent=" & E_SendMsg & "&btnSave="

            'Dim Request As System.Net.HttpWebRequest
            'Dim Response As System.Net.WebResponse

            'Request = HttpWebRequest.Create(SendText)
            'Response = Request.GetResponse()

            Dim WinHttp As Object

            WinHttp = CreateObject("Winhttp.WinHttpRequest.5.1")

            WinHttp.Open("GET", SendText)
            WinHttp.Send()


        Catch ex As Exception
            '만약 문자발송 시스템이 에러날 경우 LocalPC에 파일을 떨굼

            Dim strPath As String = Application.StartupPath & "\CSViewLog.ini"

            Dim strTxt As String = vbNewLine & "===============(" & Now & ")==============" & vbNewLine & ex.ToString & vbNewLine

            If File.Exists(strPath) = True Then
                Dim sr As StreamReader = New StreamReader(strPath, System.Text.Encoding.UTF8) '인코딩 지정
                Dim str As String = ""
                Do While sr.Peek() >= 0
                    str = sr.ReadLine()
                Loop
                sr.Close()
                Dim objWriter As StreamWriter = New StreamWriter(strPath, True)   '파일이 존재하는 경우 파일덮어씌우기 위해 True 옵션을 줌
                objWriter.Write(str & strTxt)
                objWriter.Close()
            Else
                Dim objWriter As StreamWriter = New StreamWriter(strPath)
                objWriter.Write(strTxt)
                objWriter.Close()
            End If


        End Try


    End Sub