我正在尝试向Web服务发送复杂的HTTP POST请求。 Web服务是使用VS2008创建的,您可以在其中设置VS以创建HTTP POST和GET接口以及SOAP接口。
现在请求要求两个字符串参数(用户名,文件描述等)和文件本身,表示为Base64Binary。
在VS(非asp.net Web服务)中创建Web服务并将其设置为接受HTTP POST请求时,是否可以发送包含字符串参数和二进制数据的HTTP POST请求?
答案 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());