Преобразование Access VBA в Visual Basic в VisualStudio 2015
У меня есть полнофункциональное "приложение", которое я создал в Microsoft Access и которое я использую для управления подсветкой Philips Hue. Они работают через интерфейс RESTful с использованием команд JSON, и было довольно просто создать код в VBA. Я хотел создать отдельное приложение для Windows, чтобы запускать его на своих компьютерах без доступа.
Я пытаюсь использовать Visual Studio 2015 для создания универсального приложения с использованием VB.net, но у меня возникают проблемы при конвертации части моего кода. Мне удалось исправить большинство глюков, но я не могу заставить работать команды winHttpReq. В моем исследовании кажется, что они не имеют прямой корреляции на VB.net, но ни одно из найденных мной предложений не сработало.
Dim Result As String
Dim MyURL As String, postData As String, strQuote As String
Dim winHttpReq As Object
winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
'Create address and lamp
MyURL = "http://" & IP.Text & "/api/" & Hex.Text & "/lights/" & "1" & "/state"
postData = Code.Text
winHttpReq.Open("PUT", MyURL, False)
winHttpReq.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
winHttpReq.Send(postData)
Я получаю ошибку, что "CreateObject" не объявлен. Может быть недоступен из-за уровня защиты. Я довольно новичок в кодировании VB.net, но все рекомендации по альтернативным методам публикации, похоже, не работают. Любые предложения будут ценны.
1 ответ
В VB.Net используйте WebRequest:
'Create address and lamp
MyURL = "http://" & IP.Text & "/api/" & Hex.Text & "/lights/" & "1" & "/state"
Dim request As WebRequest = WebRequest.Create(MyURL)
' Get the response.
Dim response As WebResponse = request.GetResponse()
' Display the status.
Console.WriteLine(CType(response,HttpWebResponse).StatusDescription)
' Get the stream containing content returned by the server.
Dim dataStream As Stream = response.GetResponseStream()
' Open the stream using a StreamReader for easy access.
Dim reader As New StreamReader(dataStream)
' Read the content.
Dim responseFromServer As String = reader.ReadToEnd()
' Display the content.
Console.WriteLine(responseFromServer)
' Clean up the streams and the response.
reader.Close()
response.Close()