HTTP POST和复杂的结构

时间:2009-11-17 12:22:13

标签: .net soap http-post

我正在尝试向Web服务发送复杂的HTTP POST请求。 Web服务是使用VS2008创建的,您可以在其中设置VS以创建HTTP POST和GET接口以及SOAP接口。

现在请求要求两个字符串参数(用户名,文件描述等)和文件本身,表示为Base64Binary。

在VS(非asp.net Web服务)中创建Web服务并将其设置为接受HTTP POST请求时,是否可以发送包含字符串参数和二进制数据的HTTP POST请求?

1 个答案:

答案 0 :(得分:0)

您可以使用Convert.ToBase64String()方法获取字节并转换为base64字符串。所以,你会得到:

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());