版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41556165/article/details/83927892
1.检查网络连接状态
public static bool HttpStatusIsOK(string url)
{
HttpWebRequest httpWebRequest = (HttpWebRequest)null;
url = url.IndexOf("?", StringComparison.Ordinal) <= 0 ? url + "?version=" + DateTime.Now.Ticks.ToString((IFormatProvider)CultureInfo.InvariantCulture) : url + "&version=" + DateTime.Now.Ticks.ToString((IFormatProvider)CultureInfo.InvariantCulture);
try
{
httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.Method = "GET";
httpWebRequest.Timeout = 10000;
httpWebRequest.AllowAutoRedirect = false;
httpWebRequest.UserAgent = "IIS Web Server";
using (HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse)
{
if (httpWebResponse == null)
return false;
return httpWebResponse.StatusCode < HttpStatusCode.BadRequest;
}
}
catch (Exception ex)
{
HttpHelper.Logger.Error((object)ex);
if (httpWebRequest != null)
httpWebRequest.Abort();
return false;
}
}
2. 发起http请求,并返回请求内容
public static object RequestWeb(string weburl, HttpMethods method)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(weburl);
//http里的Accept属性
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
return null;
string repData = string.Empty;
using (var stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
repData = reader.ReadToEnd();
}
}
return repData;
}
3. 下载文件流并保存到文件
/// <summary>
/// 从Web下载文件到本地
/// </summary>
/// <param name="uri">远程地址</param>
/// <param name="dest">本地文件地址,带文件名和后缀的全路径</param>
/// <returns></returns>
public static bool DownloadFromWeb(string uri, string dest)
{
if (string.IsNullOrWhiteSpace(uri) || string.IsNullOrWhiteSpace(dest))
return false;
try
{
string dir = Path.GetDirectoryName(dest);
if (!Directory.Exists(dest))
Directory.CreateDirectory(dir);
if (File.Exists(dest))
File.Delete(dest);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
return false;
using (var stream = response.GetResponseStream())
{
using (FileStream file = new FileStream(dest, FileMode.CreateNew))
{
byte[] buffer = new byte[1024];
int count = stream.Read(buffer, 0, 1024);
while (count > 0)
{
file.Write(buffer, 0, count);
count = stream.Read(buffer, 0, 1024);
}
file.Flush();
}
}
return true;
}
catch { }
return false;
}
4. 文件流到目标流
/// <summary>
/// 从网络上下载文件流, 并将文件定写入到目标流中
/// </summary>
/// <param name="uri"></param>
/// <param name="stream"></param>
public static void DownloadFromWeb(string uri, Stream stream)
{
if (string.IsNullOrWhiteSpace(uri))
throw new ArgumentNullException("uri");
if (stream == null)
throw new ArgumentNullException("stream");
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
return;
using (var rspStream = response.GetResponseStream())
{
byte[] buffer = new byte[1024];
int count = rspStream.Read(buffer, 0, 1024);
while (count > 0)
{
stream.Write(buffer, 0, count);
count = stream.Read(buffer, 0, 1024);
}
}
}
catch { }
}