/// <summary>
///
/// desc:HTTP工具类(上传数据和下载数据)
/// auth:LYK
/// date:2017/9/20 11:24:05
///
/// </summary>
namespace UploadAndDownloadDatas
{
public static class HttpTools
{
#region 上传文件到服务器
/// <summary>
/// 将文件上传到服务器
/// </summary>
/// <param name="url">服务器的URL</param>
/// <param name="parameters">上传信息说明</param>
/// <param name="filePath">上传文件的路径</param>
/// <param name="error">错误信息</param>
/// <returns>返回服务器返回的信息</returns>
public static string UploadFiles(string url, IDictionary<string, string> parameters, string filePath)
{
//属性定义
FileStream fileStream = null;
HttpWebRequest req = null;
HttpWebResponse rsp = null;
System.IO.Stream reqStream = null;
System.IO.Stream rspStream = null;
StreamReader reader = null;
//StreamReader rspReader = null;
try
{
//打开上传文件
fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
//获取服务器请求信息
req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "post";
req.KeepAlive = false;
req.ProtocolVersion = HttpVersion.Version10;
req.Timeout = 5000;
req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
//上传文件信息说明
string information = BuildQuery(parameters, "") + ";";
byte[] postData = Encoding.UTF8.GetBytes(information);
reqStream = req.GetRequestStream();
reqStream.Write(postData, 0, postData.Length);
//以二进制上传文件
byte[] datas = new byte[1024];
while (true)
{
int length = fileStream.Read(datas, 0, datas.Length);
if (length != 0)
{
reqStream.Write(datas, 0, length);
}
else
{
break;
}
}
//获取服务器返回的信息
rsp = req.GetResponse() as HttpWebResponse;
rspStream = rsp.GetResponseStream();
reader = new StreamReader(rspStream, Encoding.GetEncoding(rsp.CharacterSet));
string result = reader.ReadToEnd();
return result;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//各种流的关闭
if (reqStream != null) reqStream.Close();
if (rspStream != null) rspStream.Close();
if (reader != null) reader.Close();
//if (rspReader != null) rspReader.Close();
if (rsp != null) rsp.Close();
if (fileStream != null) fileStream.Close();
}
return "";
}
/// <summary>
/// 将字符串上传到服务器
/// </summary>
/// <param n