Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Web
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
PushMain()
End Sub
Public Sub PushMain()
' Input values as specified
Dim user As String = "uplinx_pct-Michael"
Dim pswd As String = "cisco"
Dim ip_phone As String = "10.5.1.39"
Dim url_img As String = "http://10.5.1.173/wallpaper-blue.png"
Dim url_thumbnail As String = "http://10.5.1.173/thumbnail-blue.png"
' Call the push image subroutine
PushImgToPhone(ip_phone, user, pswd, url_img, url_thumbnail)
End Sub
Public Sub PushImgToPhone(ip_phone As String, user As String, pswd As String, url_img As String, url_thumbnail As String)
' Configuration
Try
' SSL/TLS Configuration
ServicePointManager.ServerCertificateValidationCallback = Function() True
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 Or SecurityProtocolType.Tls11
ServicePointManager.Expect100Continue = True
Catch ex As Exception
MsgBox($"SSL configuration error: {ex.Message}")
Exit Sub
End Try
' Create XML content for Cisco 9851 (no KEM)
' Dim xmlContent As String = $"{url_img}{url_thumbnail}" 'too few icon elements
Dim xmlContent As String = $"{url_img}{url_thumbnail}"
' Create HTTP request
Dim url As String = $"http://{ip_phone}/CGI/Execute"
Dim request As HttpWebRequest = CType(HttpWebRequest.Create(url), HttpWebRequest)
' Prepare content based on encoding type
Dim contentToSend = ""
Try
' Configure request
request.Method = "POST"
request.PreAuthenticate = True
request.KeepAlive = True
request.Timeout = 30000 ' 30 second timeout
' Set authentication header
Dim authString As String = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{user}:{pswd}"))
request.Headers.Set("Authorization", $"Basic {authString}")
Dim UseXMLencoding As Boolean = True 'False ' True = "text/xml", False = "application/x-www-form-urlencoded"
If UseXMLencoding Then
' XML encoding branch
request.ContentType = "text/xml"
contentToSend = xmlContent
Else
' Form encoding branch
request.ContentType = "application/x-www-form-urlencoded"
contentToSend = $"XML={HttpUtility.UrlEncode(xmlContent)}"
End If
Catch ex As Exception
MsgBox($"Request setup error: {ex.Message}")
Exit Sub
End Try
Try
' Send request content
MsgBox($"Send request content: {vbCrLf}{contentToSend}")
Dim buffer() As Byte = Encoding.UTF8.GetBytes(contentToSend)
request.ContentLength = buffer.Length
Using requestStream As Stream = request.GetRequestStream()
requestStream.Write(buffer, 0, buffer.Length)
End Using
Catch ex As Exception
MsgBox($"Request stream error: {ex.Message}")
Exit Sub
End Try
Try
' Get response
Using response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Using responseStream As Stream = response.GetResponseStream()
Using reader As New StreamReader(responseStream)
Dim responseText As String = reader.ReadToEnd()
' Success - wallpaper pushed successfully
' Show response in message box
If Not String.IsNullOrEmpty(responseText) Then
MsgBox($"Phone Response: {responseText}")
Else
MsgBox("Push successful - no response content")
End If
End Using
End Using
End Using
Catch ex As WebException
MsgBox($"Web request failed: {ex.Message}")
Catch ex As Exception
MsgBox($"Response error: {ex.Message}")
End Try
End Sub
End Class