HTTP POST и сложные структуры - PullRequest
0 голосов
/ 17 ноября 2009

Я пытаюсь отправить сложный HTTP-запрос POST в веб-службу. Веб-сервис был создан с использованием VS2008, в котором можно настроить VS на создание интерфейсов HTTP POST и GET наряду с интерфейсами SOAP.

Теперь запрос запрашивает как строковые параметры (имя пользователя, описание файла и т. Д.), Так и сам файл, представленный в виде Base64Binary.

При создании веб-служб в VS (не веб-служб asp.net) и настройке их приема запроса HTTP POST - возможно ли отправлять запросы HTTP POST, содержащие как строковые параметры, так и двоичные данные?

1 Ответ

0 голосов
/ 17 ноября 2009

Вы можете получить свои байты и преобразовать их в строку base64, используя метод Convert.ToBase64String(). Итак, вы получите:

string base64 = Convert.ToBase64String(File.ReadAllBytes("yourfile.ext"));

Если вы говорите о том, как отправить его, вы можете использовать HttpWebRequest, например:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("service.asmx");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (Stream post = request.GetRequestStream())
{
    string querystring =  // note you must encode that values
                "name=" + HttpUtility.UrlEncode(name) +
               "&desc=" + HttpUtility.UrlEncode(description) +
               "&data=" + HttpUtility.UrlEncode(base64);
    byte[] data = Encoding.UTF8.GetBytes(querystring);
    post.Write(data, 0, data.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine(new StreamReader(response.GetResponseStream()).ReadToEnd());
...