HTTP Web request

创建Web请求
Creat Web Request
  private static WebRequest GetWebRequest(string url, string method, ICredentials creds)
        {
            Uri u 
= new Uri(url);
            
if ((Uri.UriSchemeHttp != u.Scheme) && (Uri.UriSchemeHttps != u.Scheme))
            {
                
throw new ArgumentOutOfRangeException("url", url);
            }

            WebRequest wr 
= WebRequest.Create(u);
            HttpWebRequest http 
= wr as HttpWebRequest;

            http.AllowAutoRedirect 
= false;

            http.Method 
= method;
            http.Credentials 
= creds;
            http.PreAuthenticate 
= true;
            
return http;
        }

判断URL是否存在或者有无权限访问:  "HEAD"
Judge web exist or not
        private static void EnsureWebResourceExists(string url, ICredentials creds)
        {
            WebRequest wr 
= GetWebRequest(url, "HEAD", creds);
            wr.GetResponse();
        }
异常捕捉到 404: 代表页面不存在, 401: 无法认证

创建Folder: "MKCOL "
Create Web Folder
 private static void CreateWebFolder(string url, ICredentials creds)
        {
            
try
            {
                EnsureWebResourceExists(url, creds);
                
return;
            }
            
catch
            {
            }
            WebRequest wr 
= GetWebRequest(url, "MKCOL", creds);
            wr.GetResponse();
        }

上传文件: "PUT"
Upload File
 private static void UploadFile(string url, string localFile, ICredentials creds)
        {
            WebClient wc 
= new WebClient();
            wc.Credentials 
= creds;

            wc.UploadFile(url, 
"PUT", localFile);
        }

判断页面是否为一个Folder: "PROPFIND"
Judge a Web Resource is Folder or not
        private static bool IsWebResourceAFolder(string url, ICredentials creds)
        {
            WebRequest wr 
= GetWebRequest(url, "PROPFIND", creds);
            wr.Headers.Add(
"Depth:0");
            wr.ContentLength 
= 0;
            WebResponse resp 
= wr.GetResponse();

            StreamReader sr 
= new StreamReader(resp.GetResponseStream());
            
string s = sr.ReadToEnd();

            
//this is a hack - should probably parse the XML, but this is good enough for now
            return s.Contains(@"<D:isFolder>t</D:isFolder>"|| s.Contains("<a:iscollection b:dt=\"boolean\">1</a:iscollection>"); ;
        }




转载于:https://www.cnblogs.com/anders06/archive/2007/09/29/910457.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值