private string getServer() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.online-convert.com/get-queue"); request.Method = "POST"; request.ContentType = @"application/x-www-form-urlencoded"; string inputdata = "\n" + @" 2e3152........03258494237510e6 image "; string postData = "queue=" + inputdata; ASCIIEncoding encoding = new ASCIIEncoding(); byte[] byte1 = encoding.GetBytes(postData); request.ContentLength = byte1.Length; Stream newStream = request.GetRequestStream(); newStream.Write(byte1, 0, byte1.Length); newStream.Close(); WebResponse response = request.GetResponse(); Stream rs = response.GetResponseStream(); StreamReader readStream = new StreamReader(rs, Encoding.UTF8); string result = readStream.ReadToEnd(); response.Close(); readStream.Close(); XDocument xdoc = XDocument.Parse(result); string server = xdoc.Descendants("params").FirstOrDefault().Descendants("server").FirstOrDefault().Value; return server; } private XDocument getStatus(string hash) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.online-convert.com/queue-status"); request.Method = "POST"; request.ContentType = @"application/x-www-form-urlencoded"; string inputdatatemplate = "queue=\n" + @" 2e3152........03258494237510e6 {0} "; string postData = string.Format(inputdatatemplate, hash); ASCIIEncoding encoding = new ASCIIEncoding(); byte[] byte1 = encoding.GetBytes(postData); request.ContentLength = byte1.Length; Stream newStream = request.GetRequestStream(); newStream.Write(byte1, 0, byte1.Length); newStream.Close(); WebResponse response = request.GetResponse(); Stream rs = response.GetResponseStream(); StreamReader readStream = new StreamReader(rs, Encoding.UTF8); string result = readStream.ReadToEnd(); response.Close(); readStream.Close(); XDocument xdoc = XDocument.Parse(result); return xdoc; } private void download(string directdownload, string filename) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(directdownload); request.Method = "GET"; WebResponse response = request.GetResponse(); Stream rs = response.GetResponseStream(); FileStream stream = new FileStream(filename, FileMode.Create); BinaryWriter writer = new BinaryWriter(stream); byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead = rs.Read(buffer, 0, buffer.Length)) != 0) { writer.Write(buffer, 0, bytesRead); } rs.Close(); writer.Close(); stream.Close(); } private void Button5_Click(object sender, RoutedEventArgs e) { string s = getServer(); string inputdata = "\n" + @" 2e3152........03258494237510e6 image convert-to-svg true "; string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x"); //C:\Users\Downloads\file.eps HttpWebRequest request = (HttpWebRequest)WebRequest.Create(s + "/queue-insert"); request.ContentType = "multipart/form-data; boundary=" + boundary; request.Method = "POST"; request.KeepAlive = true; request.Credentials = System.Net.CredentialCache.DefaultCredentials; Stream memStream = new System.IO.MemoryStream(); byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}"; //1 parameter that is not a file string formitem = string.Format(formdataTemplate, "queue", inputdata); byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem); memStream.Write(formitembytes, 0, formitembytes.Length); memStream.Write(boundarybytes, 0, boundarybytes.Length); //1 file string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n"; string header = string.Format(headerTemplate, "file", @"C:\Users\\Downloads\file.eps"); byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header); memStream.Write(headerbytes, 0, headerbytes.Length); FileStream fileStream = new FileStream(@"C:\Users\Downloads\file.eps", FileMode.Open, FileAccess.Read); byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { memStream.Write(buffer, 0, bytesRead); } memStream.Write(boundarybytes, 0, boundarybytes.Length); fileStream.Close(); request.ContentLength = memStream.Length; Stream newStream = request.GetRequestStream(); memStream.Position = 0; byte[] tempBuffer = new byte[memStream.Length]; memStream.Read(tempBuffer, 0, tempBuffer.Length); memStream.Close(); newStream.Write(tempBuffer, 0, tempBuffer.Length); newStream.Close(); string statuscode; do{ WebResponse response = request.GetResponse(); Stream rs = response.GetResponseStream(); StreamReader readStream = new StreamReader (rs, Encoding.UTF8); string result = readStream.ReadToEnd(); response.Close(); readStream.Close(); MessageBox.Show(result); XDocument xdoc = XDocument.Parse(result); string downloadUrl = xdoc.Descendants("params").FirstOrDefault().Descendants("downloadUrl").FirstOrDefault().Value; string hash = xdoc.Descendants("params").FirstOrDefault().Descendants("hash").FirstOrDefault().Value; xdoc = getStatus(hash); statuscode = xdoc.Descendants("status").FirstOrDefault().Descendants("code").FirstOrDefault().Value; if (statuscode == "101" || statuscode == "104") { Trace.WriteLine("sleeping for 10s"); Thread.Sleep(1000 * 10); } else { Trace.WriteLine(xdoc); string directDownload = xdoc.Descendants("params").FirstOrDefault().Descendants("directDownload").FirstOrDefault().Value; download(directDownload,@"C:\Users\Downloads\test.svg"); } } while(statuscode == "101" || statuscode == "104"); }