C#通用HttpPostDownLoad
public static string PostHttpDownLoad(string Url, string JsonStr, string ContentType, string sFileName)
{
string dt = DateTime.Now.ToString("yyyy-MM-dd");
string sDirectory = Application.ExecutablePath.Substring(0, 2) + @"\JQLog\";
if (!Directory.Exists(sDirectory))
{
Directory.CreateDirectory(sDirectory);
}
StreamWriter sw = File.AppendText(sDirectory + dt + ".log");
sw.WriteLine(DateTime.Now.ToString() + "\t" + "PostULR:" + Url + "\t" + "下载文件路径:" + sFileName + "\r\n" +
"Post入参:" + JsonStr + "\r\n");
sw.Flush();
sw.Close();
string strHtml = "";
if (ContentType == "")
{
ContentType = "application/json";
}
#region 常规POST调用
try
{
byte[] byteArray = null;
byteArray = Encoding.UTF8.GetBytes(JsonStr.Replace("\r", "\\r").Replace("\n", "\\n").Replace("\t", "\\t")); //转化
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(Url));
request.Timeout = 60000;
request.Method = "POST";
request.ContentType = ContentType;
request.ContentLength = byteArray.Length;
Stream myRequestStream = request.GetRequestStream();
myRequestStream.Write(byteArray, 0, byteArray.Length);//写入参数
myRequestStream.Close();
System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)request.GetResponse();
long totalBytes = myrp.ContentLength;
System.IO.Stream st = myrp.GetResponseStream();
System.IO.Stream so = new System.IO.FileStream(sFileName, System.IO.FileMode.Create);
long totalDownloadedByte = 0;
byte[] by = new byte[1024];
int osize = st.Read(by, 0, (int)by.Length);
while (osize > 0)
{
totalDownloadedByte = osize + totalDownloadedByte;
System.Windows.Forms.Application.DoEvents();
so.Write(by, 0, osize);
osize = st.Read(by, 0, (int)by.Length);
}
so.Close();
st.Close();
return "";
}
catch (WebException ex)//异常消息返回
{
HttpWebResponse res = ex.Response as HttpWebResponse;
if (res != null) //if (res != null && (res.StatusCode == HttpStatusCode.InternalServerError))
{
Stream s = res.GetResponseStream();
StreamReader objReader = new StreamReader(s, System.Text.Encoding.GetEncoding("utf-8"));
string strLine = "";
//读取
while (strLine != null)
{
strLine = objReader.ReadLine();
if (strLine != null)
{
strHtml += strLine.Trim();
}
}
}
else
{
strHtml = ex.Message;
}
sw = File.AppendText(sDirectory + dt + ".log");
sw.WriteLine(DateTime.Now.ToString() + "调用异常:" + strHtml + "\r\n");
sw.Flush();
sw.Close();
return strHtml;
}
#endregion
}