public void Simple() { string location = AppDomain.CurrentDomain.BaseDirectory; string boundary = Guid.NewGuid().ToString(); RestRequest request = new RestRequest(HttpMethod.POST, new RestUri(_MyUri, "/File")); request.ContentType = ContentType.MultiPartFormData.WithBoundary(boundary); string[] files = new string[] { Path.Combine(location, "TextFile1.txt"), Path.Combine(location, "TextFile2.txt"), }; IDictionary <string, string> formData = new Dictionary <string, string> { { "Id", "1" }, { "Email", "*****@*****.**" }, }; StringBuilder sb = new StringBuilder(); foreach (var file in files) { sb.AppendFormat("--{0}", boundary); sb.AppendFormat("\r\n"); sb.AppendFormat("Content-Disposition: form-data; name=\"media\"; filename=\"" + Path.GetFileName(file) + "\""); sb.AppendFormat("\r\n"); sb.AppendFormat("Content-Type: " + MimeTypes.GetMimeType(Path.GetExtension(file)) ?? ContentType.ApplicationOctetStream.ToString()); sb.AppendFormat("\r\n"); sb.AppendFormat("\r\n"); using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)) { byte[] contents = new byte[fs.Length]; fs.Read(contents, 0, contents.Length); sb.Append(Encoding.Default.GetString(contents)); } sb.AppendFormat("\r\n"); } foreach (var keyvaluepair in formData) { sb.AppendFormat("--{0}", boundary); sb.AppendFormat("\r\n"); sb.AppendFormat("Content-Disposition: form-data; name=\"" + keyvaluepair.Key + "\""); sb.AppendFormat("\r\n"); sb.AppendFormat("\r\n"); sb.AppendFormat(keyvaluepair.Value); sb.AppendFormat("\r\n"); } sb.AppendFormat("--{0}--", boundary); byte[] fulldata = Encoding.Default.GetBytes(sb.ToString()); var body = new RestRawRequestBody(fulldata); request.Body = body; var response = request.GetResponse <List <string> >(); var data = response.Data; Assert.Equal(2, data.Count); Assert.Equal("Hello world from text file 1!", data[0]); Assert.Equal("Hello world from text file 2!", data[1]); }
public void Simple() { string location = AppDomain.CurrentDomain.BaseDirectory; string boundary = Guid.NewGuid().ToString(); RestRequest request = new RestRequest(HttpMethod.POST, new RestUri(_MyUri, "/File")); request.ContentType = ContentType.MultiPartFormData.WithBoundary(boundary); string[] files = new string[] { Path.Combine(location, "TextFile1.txt"), Path.Combine(location, "TextFile2.txt"), }; IDictionary<string, string> formData = new Dictionary<string, string> { {"Id", "1"}, {"Email", "*****@*****.**"}, }; StringBuilder sb = new StringBuilder(); foreach (var file in files) { sb.AppendFormat("--{0}", boundary); sb.AppendFormat("\r\n"); sb.AppendFormat("Content-Disposition: form-data; name=\"media\"; filename=\"" + Path.GetFileName(file) + "\""); sb.AppendFormat("\r\n"); sb.AppendFormat("Content-Type: " + MimeTypes.GetMimeType(Path.GetExtension(file)) ?? ContentType.ApplicationOctetStream.ToString()); sb.AppendFormat("\r\n"); sb.AppendFormat("\r\n"); using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)) { byte[] contents = new byte[fs.Length]; fs.Read(contents, 0, contents.Length); sb.Append(Encoding.Default.GetString(contents)); } sb.AppendFormat("\r\n"); } foreach (var keyvaluepair in formData) { sb.AppendFormat("--{0}", boundary); sb.AppendFormat("\r\n"); sb.AppendFormat("Content-Disposition: form-data; name=\"" + keyvaluepair.Key + "\""); sb.AppendFormat("\r\n"); sb.AppendFormat("\r\n"); sb.AppendFormat(keyvaluepair.Value); sb.AppendFormat("\r\n"); } sb.AppendFormat("--{0}--", boundary); byte[] fulldata = Encoding.Default.GetBytes(sb.ToString()); var body = new RestRawRequestBody(fulldata); request.Body = body; var response = request.GetResponse<List<string>>(); var data = response.Data; Assert.Equal(2, data.Count); Assert.Equal("Hello world from text file 1!", data[0]); Assert.Equal("Hello world from text file 2!", data[1]); }