Bonjour,

Je n'arrive pas a envoyé de fichier avec la classe WebRequest.
Je reçois toujours un code HTTP 400 Demande incorrect.

Et je ne comprends pas pourquoi.

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
string boundary = String.Format("----------{0:N}", Guid.NewGuid());
            byte[] boundarybytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
 
            string urlParams = "?token=" + HttpUtility.UrlEncode(token);
            urlParams += "&folder_idi=" + folder_idi;
 
            /// exécute la requête http/ exécute la requête http
            WebRequest wb = WebRequest.Create("http://*************/gedweb/upload_documents_for_folder_idi" + urlParams);
            wb.Method = "POST";
            wb.ContentType = "multipart/form-data; boundary=" + boundary;
 
            Stream dataStream = wb.GetRequestStream();
 
            dataStream.Write(boundarybytes, 0, boundarybytes.Length);
            byte[] formitembytes = Encoding.UTF8.GetBytes("test.txt");
            dataStream.Write(formitembytes, 0, formitembytes.Length);
 
            dataStream.Write(boundarybytes, 0, boundarybytes.Length);
 
            string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
            string header = string.Format(headerTemplate, "file", "test.txt", "text/plain");
            byte[] headerbytes = Encoding.UTF8.GetBytes(header);
            dataStream.Write(headerbytes, 0, headerbytes.Length);
 
            FileStream fileStream = new FileStream("test.txt", FileMode.Open, FileAccess.Read);
            byte[] buffer = new byte[4096];
            int bytesRead = 0;
            while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
            {
                dataStream.Write(buffer, 0, bytesRead);
            }
            fileStream.Close();
 
            byte[] trailer = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
            dataStream.Write(trailer, 0, trailer.Length);
            dataStream.Close();
 
            HttpWebResponse response = (HttpWebResponse)wb.GetResponse();