myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Netzwerktechnologien » Warum geht ein Request zum FileUpload im PostMan durch aber im HttpClient gibt es Fehler?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Warum geht ein Request zum FileUpload im PostMan durch aber im HttpClient gibt es Fehler?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Duesmannr Duesmannr ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.04.2017
Beiträge: 118
Entwicklungsumgebung: Visual Studio 2017/19
Herkunft: Münster


Duesmannr ist offline

Warum geht ein Request zum FileUpload im PostMan durch aber im HttpClient gibt es Fehler?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Nabend :)

versuche seit Gestern ein Postman Request nachzubauen mit dem HttpClient, den ich über den Proxy von einer Anwendung abgefangen habe. (POST Request)

Der Request lädt eine Datei hoch.

Anbei ein Foto von Postman mit den ganzen Request Headers.
Und hier der raw Body vom Request:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
----------010521174505517
Content-Disposition: form-data; name="sess_id"

aravtx27odgrsoba
----------010521174505517
Content-Disposition: form-data; name="file"; filename="testfile.txt"
Content-Type: application/octet-stream

****file content****
----------010521174505517--

Die Authentication läuft über die "sess_id".

In der API Doku steht nur das (und der Support schreibt nur Einzeiler als Antwort)

Endpoint
 https://api-v2.ddownload.com/api/upload/server?key=key

Parameters
key : String : API key Example: 1hj124iod23j12gd3

Response

C#-Code:
{
    "msg": "OK",
    "server_time": "2017-08-11 04:29:54",
    "status": 200,
    "result": "https://s1.ddownload.com/upload/01"
}

Mein Code ist wie folgt:

C#-Code:
Service service = new("api key", null);

            using FileStream fs = File.Open(@"C:\Users\User\Downloads\testfile.txt", FileMode.Open, FileAccess.Read);

            Result<string> result = await service.GetServerUrlAsync();

            string boundary = "--------" + DateTime.Now.Ticks.ToString("x");

            StreamContent sc = new(fs);
            sc.Headers.ContentType = new("application/octet-stream");

            MultipartFormDataContent content = new(boundary)
            {
                { new StringContent(result.SessionId), "sess_id" },
                { sc, "file", "test.dat" }
            };

            content.Headers.ContentType = new("multipart/form-data");

            try
            {
                HttpResponseMessage response = await service.Client.PostAsync(result.Response, content);
                string responseString = await response.Content.ReadAsStringAsync();
            }
            catch (Exception ex)
            {

            }

Service: Erstellt einen default HttpClient.
service.GetServerUrlAsync(): ruft die oben angegeben Endpoint Adresse auf, wo ich als response die Session ID und die URL zum hochladen bekomme.

Response hat einen 200er.
Im Content steht nur:

Code:
1:
<h1>Internal Server Error</h1>\n<p>The server encountered an internal error or\nmisconfiguration and was unable to complete\nyour request.</p>

Übersehe ich etwas? Oder fehlt irgendetwas, was man bei dem Request nicht sieht?

Grüße
duesmannr

Duesmannr hat dieses Bild (verkleinerte Version) angehängt:
headers.png
Volle Bildgröße

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Duesmannr am 05.01.2021 18:41.

05.01.2021 18:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
trib trib ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.04.2008
Beiträge: 678
Entwicklungsumgebung: C#


trib ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vergleich doch mal den "Content-Type" im Header Deiner C# Anfrage, mit dem was im Postman im "Contrent-Type" steht.
Das ist schon mal definitiv unterschiedlich!

"Boundary" ist wieder ein eigener Header, denn das Semikolon trennt die Header von einander.
Sonst wäre der "Content-Type" auch ungültig! Lager das mal in eine eigene Zeile im Postman aus.

Und dann bau die Header in .Net genauso nach: content.Headers.Add().
06.01.2021 10:04 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2021 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 17.01.2021 04:56