2015-11-02 91 views
0

我有一個在Microsoft Access中創建的全功能「應用程序」,我使用控制Philips Hue燈。它們使用JSON命令通過RESTful接口進行操作,在VBA中創建代碼非常簡單。我想製作一個獨立的Windows應用程序,但是我可以在沒有Access的計算機上運行它。在VisualStudio 2015中將Access VBA轉換爲Visual Basic

我想使用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編碼,但所有推薦替代張貼方法似乎並不奏效。任何建議將不勝感激。

+0

退房System.Web命名空間的新對於.NET 4.5+ – rheitzman

回答

0

在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() 
+0

謝謝,這絕對是正確的方向。我一直在擺弄它,但似乎無法找到如何擺脫最後的錯誤代碼。 'GetResponse'不是'WebRequest'的成員。 \t \t '當前'未被聲明。由於其保護級別,它可能無法訪問。 '控制檯'未被聲明。由於其保護級別,它可能無法訪問。 「關閉」不是「StreamReader」的成員。 \t'關閉'不是'WebResponse'的成員。 –

+0

您需要爲'WebRequest'導入'System.Net'併爲'Stream'導入'System.IO'。 –

相關問題