/// <summary>
/// post方式提交
/// </summary>
/// <param name="postdata">传递的参数先调用datapost()方法</param>
/// <param name="url">访问的地址</param>
/// <param name="timeout">超时时间 6</param>
/// <returns></returns>
public static string Post(string postdata, string url, int timeout)
{
//ceShi.NetFramework.Helper.LogHelper.LogSave(string.Format("postdata: {0} url: {1} timeout:{2}", postdata, url, timeout));
System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接
string Err = "";//返回的错误信息
string result = "";//返回结果
HttpWebRequest request = null;
HttpWebResponse response = null;
Stream reqStream = null;
try
{
//设置最大连接数
ServicePointManager.DefaultConnectionLimit = 200;
//设置https验证方式
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback(CheckValidationResult);
}
/***************************************************************
* 下面设置HttpWebRequest的相关属性
* ************************************************************/
request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Timeout = timeout * 1000;
//这个在Post的时候,一定要加上,如果服务器返回错误,他还会继续再去请求,不会使用之前的错误数据,做返回数据
request.ServicePoint.Expect100Continue = false;
//设置POST的数据类型和长度
request.ContentType = "application/json;charset=utf-8";
byte[] data = System.Text.Encoding.UTF8.GetBytes(postdata);
request.ContentLength = data.Length;
//往服务器写入数据
reqStream = request.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
//获取服务端返回
response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
result = sr.ReadToEnd().Trim();
//result = System.IO.File.ReadAllText(@"C:\Users\Administrator\Desktop\test.txt");
//FileStream fs1 = new FileStream("c:\\TestTxt.txt", FileMode.Create, FileAccess.Write);//创建写入文件
//StreamWriter sw = new StreamWriter(fs1);//创建队列
//sw.WriteLine(result);//开始写入值
//sw.Close();
//fs1.Close();
sr.Close();
}
catch (System.Threading.ThreadAbortException e)
{
Err += e.ToString();
return Err;
}
catch (WebException e)
{
Err += e.ToString();
return Err;
}
catch (Exception e)
{
Err += e.ToString();
return Err;
}
finally
{
//关闭连接和流
if (response != null)
{
response.Close();
}
if (request != null)
{
request.Abort();
}
}
while (true)
{
if (result != null && result.Trim() != "")
{
return result;
}
else
{
return Err;
}
}
}
.net调用接口(post)接收二进制文件
最新推荐文章于 2023-07-13 17:19:51 发布