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