Как лучше всего создать http get в VB.net? Я хочу получить результат запроса типа http://api.hostip.info/?ip=68.180.206.184





Вам следует попробовать класс HttpWebRequest.
В VB.NET:
Dim webClient As New System.Net.WebClient
Dim result As String = webClient.DownloadString("http://api.hostip.info/?ip=68.180.206.184")
В C#:
System.Net.WebClient webClient = new System.Net.WebClient();
string result = webClient.DownloadString("http://api.hostip.info/?ip=68.180.206.184");
@MattLyons Да, может. Можно также опустить As String из Dim result As String = ..., но я пока оставлю это здесь.
Что, если для веб-страницы требуется имя пользователя и пароль?
Используйте класс WebRequest
Это для получения изображения:
Try
Dim _WebRequest As System.Net.WebRequest = Nothing
_WebRequest = System.Net.WebRequest.Create(http://api.hostip.info/?ip=68.180.206.184)
Catch ex As Exception
Windows.Forms.MessageBox.Show(ex.Message)
Exit Sub
End Try
Try
_NormalImage = Image.FromStream(_WebRequest.GetResponse().GetResponseStream())
Catch ex As Exception
Windows.Forms.MessageBox.Show(ex.Message)
Exit Sub
End Try
Самый простой способ - System.Net.WebClient.DownloadFile или DownloadString.
Попробуй это:
WebRequest request = WebRequest.CreateDefault(RequestUrl);
request.Method = "GET";
WebResponse response;
try { response = request.GetResponse(); }
catch (WebException exc) { response = exc.Response; }
if (response == null)
throw new HttpException((int)HttpStatusCode.NotFound, "The requested url could not be found.");
using(StreamReader reader = new StreamReader(response.GetResponseStream())) {
string requestedText = reader.ReadToEnd();
// do what you want with requestedText
}
Извините за C#, я знаю, что вы просили VB, но у меня не было времени на преобразование.
Вы можете использовать класс HttpWebRequest для выполнения запроса и получения ответа с заданного URL-адреса. Вы будете использовать это так:
Try
Dim fr As System.Net.HttpWebRequest
Dim targetURI As New Uri("http://whatever.you.want.to.get/file.html")
fr = DirectCast(HttpWebRequest.Create(targetURI), System.Net.HttpWebRequest)
If (fr.GetResponse().ContentLength > 0) Then
Dim str As New System.IO.StreamReader(fr.GetResponse().GetResponseStream())
Response.Write(str.ReadToEnd())
str.Close();
End If
Catch ex As System.Net.WebException
'Error in accessing the resource, handle it
End Try
Подробная информация о HttpWebRequest: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx
Второй вариант - использовать класс WebClient, это обеспечивает более простой в использовании интерфейс для загрузки веб-ресурсов, но не такой гибкий, как HttpWebRequest:
Sub Main()
'Address of URL
Dim URL As String = http://whatever.com
' Get HTML data
Dim client As WebClient = New WebClient()
Dim data As Stream = client.OpenRead(URL)
Dim reader As StreamReader = New StreamReader(data)
Dim str As String = ""
str = reader.ReadLine()
Do While str.Length > 0
Console.WriteLine(str)
str = reader.ReadLine()
Loop
End Sub
Более подробную информацию о веб-клиенте можно найти по адресу: http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx
Удалите точку с запятой из string.Close (); в первом примере все хорошо.
WebClient - быстрое решение, но HttpWebRequest более мощный. В проекте мне нужно было получать метаданные изображений с удаленных ресурсов: я избегал загрузки изображений в файловую систему и использовал встроенный ResponseStream.
Response.Write(str.ReadToEnd()) предполагает, что она использует asp.net.
@Wolfwyrd будет ли это работать с https или нужно будет использовать дополнительный api.
@marshalcraft - должно работать нормально для https, см. stackoverflow.com/questions/560804/… для указателей, если это не работает для вас
Public Function getLoginresponce(ByVal email As String, ByVal password As String) As String
Dim requestUrl As String = "your api"
Dim request As HttpWebRequest = TryCast(WebRequest.Create(requestUrl), HttpWebRequest)
Dim response As HttpWebResponse = TryCast(request.GetResponse(), HttpWebResponse)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
Dim result = responseFromServer
reader.Close()
response.Close()
Return result
End Function
я просто создаю функцию и называю ее
Dim webClient As System.Net.WebClient = New System.Net.WebClient()можно сократить доDim webClient As New System.Net.WebClient, не так ли?