Search code examples
c#.netwinformswebclientdotnet-httpclient

How to convert WebClient to HttpClient C# WinForms


I need to convert the webclient code which is obsolte to httpclient.

using WebClient Client = new();
Client.Headers["User-Agent"] = CompanyName + "/" + ProductName;
byte[] responseBytes = Client.UploadFile("http://blahblah.com/upload.php", fileimage);
string response = Encoding.Default.GetString(responseBytes);
_ = MessageBox.Show(response, Text);

I need the exact same way to do this. I have seen other answers but none meet my needs.


Solution

  • 1- read AllByte of file into upfilebytes array

    2-create new HttpClient and MultipartFormDataContent

    3- add byte array to content

    4-upload MultipartFormDataContent content async and store response in response.

    var upfilebytes = File.ReadAllBytes("fileimage");
    
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("User-Agent", CompanyName + "/" + ProductName);
    MultipartFormDataContent content = new MultipartFormDataContent();
    ByteArrayContent baContent = new ByteArrayContent(upfilebytes);
    
    content.Add(baContent, "File", "filename.png");
    
     var response = await client.PostAsync("http://blahblah.com/upload.php", content);
    
     var responsestr = await response.Content.ReadAsStringAsync();
    
    MessageBox.Show(response, responsestr);