C# Winform一个问题 我在做一个播放器,有个添加网络URL的问题,我想知道我如何去判断这个URL是否存在,可以播放的?就是404跳转也说明这个URL不存在。是基于.Net FrameWork2.0和MediaPlayer的。求各位大侠指点,贴出代码!:)谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static bool IsUrlOk(string url){ HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { return response.StatusCode == HttpStatusCode.OK; } } catch (System.Net.WebException) { return false; }} private bool UrlIsExist(String url) { System.Uri u = null; try { u = new Uri(url); } catch { return false; } bool isExist = false; System.Net.HttpWebRequest r = System.Net.HttpWebRequest.Create(u) as System.Net.HttpWebRequest; r.Method = "HEAD"; try { System.Net.HttpWebResponse s = r.GetResponse() as System.Net.HttpWebResponse; if (s.StatusCode == System.Net.HttpStatusCode.OK) { isExist = true; } } catch (System.Net.WebException x) { try { isExist = ((x.Response as System.Net.HttpWebResponse).StatusCode != System.Net.HttpStatusCode.NotFound); } catch { isExist = (x.Status == System.Net.WebExceptionStatus.Success); } } return isExist; } private void CheckUrlAction() { Response.Write("<li>http://dotnet.aspx.cc/Images/ 是否存在:" + UrlIsExist("http://dotnet.aspx.cc/Images/")); Response.Write("<li>http://dotnet.aspx.cc/ImagesX/ 是否存在:" + UrlIsExist("http://dotnet.aspx.cc/ImagesX/")); Response.Write("<li>http://xxxxx/ 是否存在:" + UrlIsExist("http://xxxxx/")); Response.Write("<li>hxxxxxxxxxxxxxxxxxxx 是否存在:" + UrlIsExist("hxxxxxxxxxxxxxxxxxxx")); Response.Write("<li>http://dotnet.aspx.cc/Images/logoSite.gif 是否存在:" + UrlIsExist("http://dotnet.aspx.cc/Images/logoSite.gif")); Response.Write("<li>http://dotnet.aspx.cc/Images/logoSite2.gif 是否存在:" + UrlIsExist("http://dotnet.aspx.cc/Images/logoSite2.gif")); } protected void Button1_Click(object sender, EventArgs e) { CheckUrlAction(); } 个人感觉在添加的时候其实不必判断是否存在,只需大致判断一下格式,比如是是否mp3等,就像QQ音乐播放器一样,在播放时如果可以播放就播放,不存在当然就无法播放,就把列表里的这首歌曲显示为红色 为什么说在添加时不判断呢?因为网络歌曲一般都不大稳定,比如服务器停机等原因都是客观存在的,如果一个url其实是正确的,但在你添加的时候服务器停机了,你就认为它不存在吗?听网络歌曲很多情况下都会出现不稳定的情况 我是用MediaPlayer API,我该怎么判断无法播放呢?是什么状态可以得到返回的信息? //直接判断看看你给的URL能不能得到这个网站的源码就是了 private string GetWebContent(string sUrl) { string strResult = ""; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sUrl); //声明一个HttpWebRequest请求 request.Timeout = 3000000; //设置连接超时时间 request.Headers.Set("Pragma", "no-cache"); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.ToString() != "") { Stream streamReceive = response.GetResponseStream(); Encoding encoding = Encoding.GetEncoding("UTF-8"); StreamReader streamReader = new StreamReader(streamReceive, encoding); strResult = streamReader.ReadToEnd(); } } catch (Exception exp) { //MessageBox.Show("出错"); MessageBox.Show("路径不存在"); return ""; } return strResult; }string str=GetWebContent(url);//路径自己填进去if(str!=""){ //存在}else{ //不存在} http://www.baidu.com/q.wma 这个地址不存在吧?但是返回是存在的,因为有404. 这个也是哈 那么再加一个判断呢if(str.IndexOf("404")>0)//也可以用正则表达式{ } 那比如说403之类的Rewrite的,我还有什么更简单去判断? System.Net.HttpStatusCode枚举包含各种响应状态。 System.Net.HttpStatusCode.OK说明此文件存在,并且说排除了404,403之类的Rewrite? 50分 使子窗体位于最顶层应该如何设置 求一算法,输入一个数值,系统根据给定的数据集给出与该值最接近的组合 combobox 选择问题 C#用什么打开一个程序? 英文论坛博客 关注AOP csdn里有各个控件的用法介绍的那个链接在哪里? DiretoryServices命名空间怎么不能用?高手帮忙~~~~~~~~~~ 怎么把窗体做成像QQ那样,屏幕贴边自动隐藏???? c#环境下 如何改变前台单元格状态 C# 多线程的等待所有线程结束的一个问题 GDAL/OGR GEOS库协同工作
public static bool IsUrlOk(string url)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
return response.StatusCode == HttpStatusCode.OK;
}
}
catch (System.Net.WebException)
{
return false;
}
}
private bool UrlIsExist(String url)
{
System.Uri u = null;
try
{
u = new Uri(url);
}
catch { return false; }
bool isExist = false;
System.Net.HttpWebRequest r = System.Net.HttpWebRequest.Create(u) as System.Net.HttpWebRequest;
r.Method = "HEAD";
try
{
System.Net.HttpWebResponse s = r.GetResponse() as System.Net.HttpWebResponse;
if (s.StatusCode == System.Net.HttpStatusCode.OK)
{
isExist = true;
}
}
catch (System.Net.WebException x)
{
try
{
isExist = ((x.Response as System.Net.HttpWebResponse).StatusCode != System.Net.HttpStatusCode.NotFound);
}
catch { isExist = (x.Status == System.Net.WebExceptionStatus.Success); }
}
return isExist;
} private void CheckUrlAction()
{
Response.Write("<li>http://dotnet.aspx.cc/Images/ 是否存在:" + UrlIsExist("http://dotnet.aspx.cc/Images/"));
Response.Write("<li>http://dotnet.aspx.cc/ImagesX/ 是否存在:" + UrlIsExist("http://dotnet.aspx.cc/ImagesX/"));
Response.Write("<li>http://xxxxx/ 是否存在:" + UrlIsExist("http://xxxxx/"));
Response.Write("<li>hxxxxxxxxxxxxxxxxxxx 是否存在:" + UrlIsExist("hxxxxxxxxxxxxxxxxxxx"));
Response.Write("<li>http://dotnet.aspx.cc/Images/logoSite.gif 是否存在:" + UrlIsExist("http://dotnet.aspx.cc/Images/logoSite.gif"));
Response.Write("<li>http://dotnet.aspx.cc/Images/logoSite2.gif 是否存在:" + UrlIsExist("http://dotnet.aspx.cc/Images/logoSite2.gif")); } protected void Button1_Click(object sender, EventArgs e)
{
CheckUrlAction();
}
我是用MediaPlayer API,我该怎么判断无法播放呢?是什么状态可以得到返回的信息?
//直接判断看看你给的URL能不能得到这个网站的源码就是了
private string GetWebContent(string sUrl)
{
string strResult = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sUrl);
//声明一个HttpWebRequest请求
request.Timeout = 3000000;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.ToString() != "")
{
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("UTF-8");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
}
catch (Exception exp)
{
//MessageBox.Show("出错");
MessageBox.Show("路径不存在");
return "";
}
return strResult;
}
string str=GetWebContent(url);//路径自己填进去
if(str!="")
{
//存在
}
else
{
//不存在
}
if(str.IndexOf("404")>0)//也可以用正则表达式
{
}