У меня есть функция vb.net асинхронной HTTPResponse так:vb.net Task (Of HttpResponseMessage) для HttpResponseMessage
Public Async Function getWebserviceResponse(ByVal sb As StringBuilder, ByVal baseUri As Uri, ByVal Method As String, ByVal User As String, ByVal Password As String) As Task(Of HttpResponseMessage)
Dim client As HttpClient = New HttpClient()
client.BaseAddress = baseUri
Dim authHeader As AuthenticationHeaderValue = New AuthenticationHeaderValue(
"Basic",
Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
String.Format("{0}:{1}", User, Password))))
client.DefaultRequestHeaders.Authorization = authHeader
Dim content As New StringContent(sb.ToString, System.Text.Encoding.UTF8, "application/json")
Dim resp As HttpResponseMessage
Dim cancellationToken As CancellationToken
If Method = "Post" Then
resp = Await client.PostAsync(baseUri, content, cancellationToken)
ElseIf Method = "Put" Then
resp = Await client.PutAsync(baseUri, content, cancellationToken)
End If
Return resp
End Function
Проблема в том, что "соответственно" должен вернуть "нормальный" HttpResponseMessage и не Задача (из HttpResponseMessage) ...
Как я могу это получить? Заранее спасибо за вашу помощь!
С наилучшими пожеланиями Мартин
Большое спасибо Дэвиду! Сегодня вечером я проверю решение. – Martin
Если я хочу вызвать мой getWebserviceResponse() с StreamReader, я получаю следующую ошибку: «Содержимое» не является членом «System.Threading.Tasks.Task (Of System.Net.Http.HttpResponseMessage)». я знаю, Await IST отсутствует в заявлении: \t Dim myStreamReader As New StreamReader (. WebserviceResponse.getWebserviceResponse (....) Content.ReadAsStreamAsync() Результат.) Как я могу улучшить заявление Invoke с AWAIT ? Заранее большое спасибо! – Martin
@Martin: Это потому, что контент не является свойством задачи. Вы должны * ждать * задачи, как это было предложено в ответе. Кроме того, лучше не использовать «Результат», а ждать результата. – David