2017-11-27 3 views
0

Ich habe diesen Code in C#HttpClient.PutAsJsonAsync in VB.NET

private async Task AAA(ClassInstance campanaRep) 
{ 
    using (HttpClient client = new HttpClient()) 
    { 
     client.BaseAddress = new Uri(apiUrl); 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
        HttpResponseMessage response = await client.PutAsJsonAsync("Http:...." + "WebMethod", campanaRep); 
    if (response.IsSuccessStatusCode) 
    bol = response.Content.ReadAsAsync<bool>().Result; 
} 

es funktioniert gut ....

Ich versuche, VB.NET Aufruf zu konvertieren, ist das, was ich konnte wandern

private sub AAA(campanaRep as ClassInstance) 

    Using client As New HttpClient() 
      client.BaseAddress = New Uri(apiUrl) 
      client.DefaultRequestHeaders.Accept.Clear() 
      client.DefaultRequestHeaders.Accept.Add(New System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")) 
      HttpResponseMessage response = await client.PutAsJsonAsync("Http:...." + "WebMethod", campanaRep); 
    if (response.IsSuccessStatusCode) 
    bol = response.Content.ReadAsAsync<bool>().Result 
    end sub 
End Function 

ich auf der Leitung einen Fehler haben

Httpresponse Nachricht response = erwarten client.PutAsJsonAsync ("Http" + "WebMethod", campanaRep)

I Sache AAA Funktion muss anders definiert. Und die Zuordnung muss auch anders sein, aber ich finde nicht die richtige Syntax.

Wie sollte es sein?

+4

Sie uns sagen, Sie einen Fehler haben, aber nicht das, was der Fehler ist ... – DavidG

+2

Auch aus meinem begrenzten Speicher von VB: Du hast kein 'End If', am Ende gibt es eine streunende' End Function', du verpasst ein 'End Using' und' bool' ist 'Boolean '(vielleicht) – DavidG

+0

Was ist der Fehler? Warum gibt es am Ende des VB-Codes eine zufällige 'End Function'? Müssen Sie nicht auch das 'If' und das' Using' beenden? Verwendet VB keine andere Syntax für die Bereitstellung eines Typarguments für eine generische Methode? Warum rufen Sie ".Result" auf, anstatt "await" zu verwenden, wie Sie es anderswo tun? Es ist nicht wirklich klar * welches * Problem in diesem Code ist das, das du gerade zu lösen versuchst ... – David

Antwort

3

Es gibt viele Fehler mit Ihrem Code, aber es scheint, dass Sie auf der Fehler-Compiler stecken geblieben sind darauf hindeutet, dass:

Methode Argumente in Klammern gesetzt werden müssen

Dies liegt daran, Sie haven‘ t hat die Methode als Async markiert, so dass der Compiler davon ausgeht, dass Await eine Funktion ist. So fügen Sie einfach, dass mit der Unterschrift:

Private Async Sub AAA(campanaRep As ClassInstance) 

Auch der Rest des Codes ist ein komplettes Chaos, hier ist es aufgeräumt etwas:

Private Async Sub AAA(campanaRep As ClassInstance) 
    Using client As New System.Net.Http.HttpClient() 
     client.BaseAddress = New Uri("") 
     client.DefaultRequestHeaders.Accept.Clear() 

     Dim response As System.Net.Http.HttpResponseMessage = _ 
      Await client.PutAsJsonAsync("Http"+ "WebMethod", campanaRep) 

     If (response.IsSuccessStatusCode) 
      bol = Await response.Content.ReadAsAsync(Of Boolean) 
     End If 
    End Using 
End Sub