Отправить строку ASCII, используя HTTP Post - PullRequest
0 голосов
/ 18 сентября 2010

В настоящее время я отправляю данные изображения в виде байтового массива.Тем не менее, я хочу отправить его в виде строки ASCII.Как я могу отправить строку ASCII с клиента на сервер, используя HTTP POST в C #?

    HttpWebRequest webRequest = null; 
    webRequest = (HttpWebRequest)HttpWebRequest.Create("http://192.168.1.2/"); 
    webRequest.ContentType = "application/x-www-form-urlencoded";                                            
    webRequest.Method = "POST";    

//Assume here, I got the ascii string from image using ImageToBase64() function.

byte[] buffer = encoding.GetBytes(myString)); //assume myString is an ASCII string

    // Set content length of our data 
    webRequest.ContentLength = buffer.Length; 

    webStream = webRequest.GetRequestStream(); 
    webStream.Write(buffer, 0, buffer.Length); //This is the only way I know how to send data -using byte array "buffer". But i wan to send data over as ASCII string "myString". How?
    webStream.Close(); 

    //I used this function to turn an image into ASCII string to be sent
    public string ImageToBase64(Image image, 
      System.Drawing.Imaging.ImageFormat format)
    {
      using (MemoryStream ms = new MemoryStream())
      {
        // Convert Image to byte[]
        image.Save(ms, format);
        byte[] imageBytes = ms.ToArray();

        // Convert byte[] to Base64 String
        string base64String = Convert.ToBase64String(imageBytes);
        return base64String;
      }
    }

1 Ответ

0 голосов
/ 18 сентября 2010

Я предлагаю отказаться от HttpWebRequest в пользу WebClient.Также, если вы отправляете, используя content-type из application/x-www-form-urlencoded, сервер будет ожидать, что опубликованные данные будут соответствовать формату key1=value1&key2=value2.

// sending image to server as base 64 string
string imageBase64String = "YTM0NZomIzI2OTsmIzM0NTueYQ...";
using (WebClient client = new WebClient())
{
    var values = new NameValueCollection();
    values.Add("image", imageBase64String);
    client.UploadValues("http://192.168.1.2/", values);
} 

То же самое, но с использованием WebHttpRequest

string imageBase64String = "YTM0NZomIzI2OTsmIzM0NTueYQ...";
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create("http://192.168.1.2/");
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
string formPostString = "image=" + HttpUtility.UrlEncode(imageBase64String);
byte[] buffer = ASCIIEncoding.ASCII.GetBytes(formPostString);
webRequest.ContentLength = buffer.Length;
using (Stream webStream = webRequest.GetRequestStream())
{
    webStream.Write(buffer, 0, buffer.Length);
}

Затем вы можете обработать отправленное изображение на стороне сервера, используя объект HttpRequest.

string imageBase64String = HttpContext.Current.Request.Form["image"];
...