Пример #1
0
        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]);
        }
Пример #2
0
        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]);
        }