curl to httpclient (POST) konvertieren

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von slice.

    curl to httpclient (POST) konvertieren

    ich möchte gerne diesen Aufruf

    Quellcode

    1. curl --request POST "http://192.168.1.99:8086/api/v2/write?org=db1&bucket=data&precision=ns" --header "Authorization: Token 12345..." --header "Content-Type: text/plain; charset=utf-8" --header "Accept: application/json" --data-binary "solar,mytag=1 cwatt=125"


    nach VB.net übersetzen und mittels httpclient (Post) senden. Es soll ein Datensatz in eine InfluxDB 2.4 geschrieben werden. Bisher habe ich nur das erstellt:

    VB.NET-Quellcode

    1. Dim httpClient As HttpClient = New HttpClient()
    2. Dim DAhttpContent As StringContent = New StringContent("solar,mytag=1 cwatt=222", Encoding.UTF8, "text/plain")
    3. DAhttpContent.Headers.Add("Authorization:", "Token 12345...")
    4. DAhttpContent.Headers.Add("Content-Type:", "text/plain; charset=utf-8")
    5. DAhttpContent.Headers.Add("Accept:", "application/json")
    6. Dim response = httpClient.PostAsync("http://192.168.1.99:8086/write?db=data&u=user1&p=writewrite1", DAhttpContent)


    Bekomme dann aber folgenden Fehler: Error-> System.FormatException: "The header name format is invalid."
    Die Authentifikation per Token scheint hier nicht übernommen zu werden. Ich habe dann das hier gefunden:

    VB.NET-Quellcode

    1. Private Shared Async Function Main3() As Task
    2. Using xclient As HttpClient = New HttpClient()
    3. Dim request_json = "solar,mytag=1 cwatt=222"
    4. Dim content = New StringContent(request_json, Encoding.UTF8, "text/plain")
    5. Dim authenticationBytes = Encoding.ASCII.GetBytes("12345...")
    6. xclient.DefaultRequestHeaders.Authorization = New AuthenticationHeaderValue("Basic", Convert.ToBase64String(authenticationBytes))
    7. xclient.DefaultRequestHeaders.Accept.Add(New MediaTypeWithQualityHeaderValue("application/json"))
    8. Dim result = Await xclient.PostAsync("http://192.168.1.99:8086/api/v2/write?org=db1&bucket=data&precision=ns", content)
    9. 'Dim result_string As Task(Of String) = result.Content.ReadAsStringAsync() '<- Error "Content is no Member of Task(Of HttpResponseMessage)"
    10. End Using
    11. End Function


    Dies läuft zwar ohne Fehlermeldung, aber es kommt weder ein Datensatz in der Datenbank an, noch bekomme ich eine Rückmeldung (Zeile 12 läuft nicht).
    Es wäre toll wenn mir hier jemand bitte helfen könnte. Ein einfacher Aufruf wäre gut, eine asynchrone Methode natürlich besser.

    Bisher habe ich keine funktionierende Lösung finden können...
    Danke für den Tipp. Dann kommt aber folgender Fehler

    System.InvalidOperationException: "Misused header name, 'Authorization'. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects."

    Vollzitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Beim HttpClient kannst du den Header mittels httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", "12345..."); setzten oder alternativ über ein HttpClientHandler.