#vb.net
#vb.net
Вопрос:
В настоящее время я пытаюсь сделать снимок с помощью своей камеры, используя этот код. Но я не получаю ответа. Я уже написал функцию ответа, запроса. Моя камера находится в режиме клиента. Итак, если я сейчас запущу свое приложение и нажму кнопку «Click», оно должно сделать снимок.
Public Class theta
Public THETA_ID As String = "name"
Public THETA_PASSWORD As String = "password"
Public THETA_IP As String = "XX"
Public THETA_URL As String = THETA_IP amp; "osc/"
Public response As String
Function post(osc_command As String) As String
Dim url = THETA_URL osc_command
Dim request As Net.WebRequest = Net.WebRequest.Create(url)
request.Credentials = New Net.NetworkCredential(THETA_ID, THETA_PASSWORD)
Dim resp As Net.WebResponse = request.GetResponse()
End Function
Функция должна сделать снимок здесь.
Public Async Function takePicture() As Task(Of String)
Dim url = THETA_URL amp; "commands/execute"
Dim payload = New Dictionary(Of Object, Object) From {
{"name", "camera.takePicture"}
}
ServicePointManager.Expect100Continue = False
//Dim request As Net.HttpWebRequest = Net.HttpWebRequest.Create(url)
//request.Credentials = New Net.NetworkCredential(THETA_ID, THETA_PASSWORD)
Dim httpClientHandler = New HttpClientHandler() With {
.Credentials = New NetworkCredential("name", "password", "")
}
Dim x As New Http.HttpClient(httpClientHandler)
Dim content As New Net.Http.StringContent("{""name"": ""camera.takepicture""}",
System.Text.Encoding.UTF8, "application/json")
Dim response As Net.Http.HttpResponseMessage = Await x.PostAsync(url, content)
Dim result As String = Await response.Content.ReadAsStringAsync()
response = response
'Dim response As WebResponse = request.GetResponse()
End Function
Это запрос.
Function SendRequest(actionstring As String) As XDocument
Dim url = THETA_URL amp; "commands/execute"
Dim postXml As XDocument = <?xml version='1.0'?>
<txtsig_request version='2.0'>
<credentials>
<api_username><%= THETA_ID %></api_username>
<api_password><%= THETA_PASSWORD %></api_password>
<client_id><%= "XX" %></client_id>
</credentials>
<%= XElement.Parse(actionstring) %>
</txtsig_request>
Dim postString As String = postXml.Declaration.ToString amp; postXml.ToString
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
request.Method = "POST"
request.AllowWriteStreamBuffering = False
request.PreAuthenticate = True
request.ContentType = "application/xml"
request.ContentLength = postString.Length
request.KeepAlive = True
Dim outputstream As Stream = request.GetRequestStream()
Dim postBytes As Byte() = Encoding.ASCII.GetBytes(postString)
outputstream.Write(postBytes, 0, postBytes.Length)
Dim response As WebResponse = request.GetResponse()
Dim datastream As Stream = response.GetResponseStream()
Dim xd As XDocument = XDocument.Load(datastream, LoadOptions.None)
outputstream.Close()
response.Close()
Return xd
End Function
Комментарии:
1. Должно
THETA_URL
быть/
послеTHETA_IP
?2. Нет, я думаю…
3. Можете ли вы получить доступ к камере из браузера? Если это так, то вы можете сравнить то, что отправляет браузер, с тем, что отправляет ваша программа.