DownloadStringAsync, чтобы получить текстовую строку?
Я пытаюсь создать приложение для Windows Phone 7.1, в основном конвертер валют. я использую DownloadStringAsync
способ получить короткую строку, содержащую курс обмена с определенного сайта. Я тестировал в Visual Studio 2010, DownloadString
работал просто отлично. Но не для телефонного приложения. Что мне нужно сделать здесь? Я не могу понять это.
Partial Public Class MainPage
Inherits PhoneApplicationPage
Dim webClient As New System.Net.WebClient
Dim a As String
Dim b As String
Dim result As String = Nothing
' Constructor
Public Sub New()
InitializeComponent()
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
a = "USD"
b = "GBP"
webClient = New WebClient
Dim result As String = webClient.DownloadStringAsync(New Uri("http://rate-exchange.appspot.com/currency?from=" + a + "&to=" + b) as String)
TextBox1.Text = result
End Sub
Конечный класс
1 ответ
Несколько вещей здесь не так:
DownloadStringAsync
не возвращает значение (void
метод в терминах C#)- Вы должны справиться с
DownloadStringCompleted
событие дляWebClient
переменная. Вы можете получить результат в обработчике события.
Вы можете изменить свой код на что-то вроде этого, чтобы вышеперечисленное работало:
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
a = "USD"
b = "GBP"
webClient = New WebClient
'Add the event handler here
AddHandler webClient.DownloadStringCompleted, AddressOf webClient_DownloadStringCompleted
Dim url As String = "http://rate-exchange.appspot.com/currency?from=" & a & "&to=" & b
webClient.DownloadStringAsync(New Uri(url))
End Sub
Private Sub webClient_DownloadStringCompleted(ByVal sender as Object,ByVal e as DownloadStringCompletedEventArgs)
TextBox1.Text = e.result
End Sub
Просто используйте DownloadStringTaskAsync
:
Using WebClient As WebClient = New WebClient
Return Await WebClient.DownloadStringTaskAsync(New Uri(myurl))
End Using