.NET 8, httpclient und Datei -Uploads: Was fehlt mir? Erstellen von Anforderungen mit Header- und Abfragungsparams
Posted: 01 Mar 2025, 13:52
Hier ist ein .NET 4.6.2 -API -Web -Client, der eine Datei hochladen. Einfaches Zeug: < /p>
Mein Problem ist es, eine Datei in .NET 8 mit httpclient hochzuladen. Die aktuelle Iteration meines Codes ist ungefähr so: < /p>
var httpClient = GetHttpClient(); // gets from the HttpClientFactory
httpClient.Timeout = new TimeSpan( 0, 0, timeout );
var uriBuilder = BuildUriWithGets();
var req = new HttpRequestMessage( HttpVerb, uriBuilder.ToString() );
req.Headers.TryAddWithoutValidation( HttpHeaderNames.CONTENT_TYPE, contentType );
req.Headers.TryAddWithoutValidation( HttpHeaderNames.CONTENT_DISPOSITION, disp );
foreach ( var h in _headers )
request.Headers.TryAddWithoutValidation( h.Key, h.Value );
HttpResponseMessage resp;
using var requestContent = new MultipartFormDataContent();
using var fileStream = File.OpenRead( fileFullPath );
requestContent.Add( new StreamContent( fileStream ) );
req.Content = requestContent;
resp = httpClient.Send( req );
< /code>
Ist dies die richtige Möglichkeit, eine Datei mit Header- und Abfrageparamien zu senden? Ich möchte, dass die Datei der Parameter "Datei" ist. (Ich habe Iterationen dazu ausprobiert, ohne Erfolg.)
Gibt es außerdem eine gute Möglichkeit, Siehe die Rohnachricht, die über einen Text -Dump gesendet wird (ich fahre dies über Visual Studio). Ich könnte die apiwebclient -Anfrage und die HTTPClient -Anfrage vergleichen, um zu sehen, was fehlt.
Code: Select all
var webClient = new ApiWebClient();
webClient.Timeout = timeout;
webClient.Headers.Add( HttpHeaderNames.CONTENT_TYPE, contentType );
webClient.Headers.Add( HttpHeaderNames.CONTENT_DISPOSITION, disp );
foreach ( var h in _headers )
webClient.Headers.Add( h.Key, h.Value );
respBytes = webClient.UploadFile( FullUrl, fileFullPath );
var httpClient = GetHttpClient(); // gets from the HttpClientFactory
httpClient.Timeout = new TimeSpan( 0, 0, timeout );
var uriBuilder = BuildUriWithGets();
var req = new HttpRequestMessage( HttpVerb, uriBuilder.ToString() );
req.Headers.TryAddWithoutValidation( HttpHeaderNames.CONTENT_TYPE, contentType );
req.Headers.TryAddWithoutValidation( HttpHeaderNames.CONTENT_DISPOSITION, disp );
foreach ( var h in _headers )
request.Headers.TryAddWithoutValidation( h.Key, h.Value );
HttpResponseMessage resp;
using var requestContent = new MultipartFormDataContent();
using var fileStream = File.OpenRead( fileFullPath );
requestContent.Add( new StreamContent( fileStream ) );
req.Content = requestContent;
resp = httpClient.Send( req );
< /code>
Ist dies die richtige Möglichkeit, eine Datei mit Header- und Abfrageparamien zu senden? Ich möchte, dass die Datei der Parameter "Datei" ist. (Ich habe Iterationen dazu ausprobiert, ohne Erfolg.)
Gibt es außerdem eine gute Möglichkeit, Siehe die Rohnachricht, die über einen Text -Dump gesendet wird (ich fahre dies über Visual Studio). Ich könnte die apiwebclient -Anfrage und die HTTPClient -Anfrage vergleichen, um zu sehen, was fehlt.