当前位置: 首页>>代码示例>>C#>>正文


C# HttpWebRequest.Clone方法代码示例

本文整理汇总了C#中System.Net.HttpWebRequest.Clone方法的典型用法代码示例。如果您正苦于以下问题:C# HttpWebRequest.Clone方法的具体用法?C# HttpWebRequest.Clone怎么用?C# HttpWebRequest.Clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Net.HttpWebRequest的用法示例。


在下文中一共展示了HttpWebRequest.Clone方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetResponse

        public IncomingWebResponse GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
        {
            ErrorUtilities.VerifyArgumentNotNull(request, "request");

            // This request MAY have already been prepared by GetRequestStream, but
            // we have no guarantee, so do it just to be safe.
            this.PrepareRequest(request, false);

            // Since we may require SSL for every redirect, we handle each redirect manually
            // in order to detect and fail if any redirect sends us to an HTTP url.
            // We COULD allow automatic redirect in the cases where HTTPS is not required,
            // but our mock request infrastructure can't do redirects on its own either.
            Uri originalRequestUri = request.RequestUri;
            int i;
            for (i = 0; i < this.MaximumRedirections; i++) {
                this.EnsureAllowableRequestUri(request.RequestUri, (options & DirectWebRequestOptions.RequireSsl) != 0);
                CachedDirectWebResponse response = this.chainedWebRequestHandler.GetResponse(request, options & ~DirectWebRequestOptions.RequireSsl).GetSnapshot(this.MaximumBytesToRead);
                if (response.Status == HttpStatusCode.MovedPermanently ||
                    response.Status == HttpStatusCode.Redirect ||
                    response.Status == HttpStatusCode.RedirectMethod ||
                    response.Status == HttpStatusCode.RedirectKeepVerb) {
                    // We have no copy of the post entity stream to repeat on our manually
                    // cloned HttpWebRequest, so we have to bail.
                    ErrorUtilities.VerifyProtocol(request.Method != "POST", MessagingStrings.UntrustedRedirectsOnPOSTNotSupported);
                    Uri redirectUri = new Uri(response.FinalUri, response.Headers[HttpResponseHeader.Location]);
                    request = request.Clone(redirectUri);
                } else {
                    return response;
                }
            }

            throw ErrorUtilities.ThrowProtocol(MessagingStrings.TooManyRedirects, originalRequestUri);
        }
开发者ID:vrushalid,项目名称:dotnetopenid,代码行数:33,代码来源:UntrustedWebRequestHandler.cs

示例2: GetResponse

		public IncomingWebResponse GetResponse(HttpWebRequest request, DirectWebRequestOptions options) {
			// This request MAY have already been prepared by GetRequestStream, but
			// we have no guarantee, so do it just to be safe.
		    this.PrepareRequest(request, false);

		    // Since we may require SSL for every redirect, we handle each redirect manually
			// in order to detect and fail if any redirect sends us to an HTTP url.
			// We COULD allow automatic redirect in the cases where HTTPS is not required,
			// but our mock request infrastructure can't do redirects on its own either.
			Uri originalRequestUri = request.RequestUri;
			int i;
		    for (i = 0; i < this.MaximumRedirections; i++) {
		        this.EnsureAllowableRequestUri(request.RequestUri, (options & DirectWebRequestOptions.RequireSsl) != 0);
		        CachedDirectWebResponse response = this.chainedWebRequestHandler.GetResponse(request, options & ~DirectWebRequestOptions.RequireSsl).GetSnapshot(this.MaximumBytesToRead);
		        if (response.Status == HttpStatusCode.MovedPermanently ||
		            response.Status == HttpStatusCode.Redirect ||
		            response.Status == HttpStatusCode.RedirectMethod ||
		            response.Status == HttpStatusCode.RedirectKeepVerb) {
		            // We have no copy of the post entity stream to repeat on our manually
		            // cloned HttpWebRequest, so we have to bail.
		            ErrorUtilities.VerifyProtocol(request.Method != "POST", MessagingStrings.UntrustedRedirectsOnPOSTNotSupported);
		            Uri redirectUri = new Uri(response.FinalUri, response.Headers[HttpResponseHeader.Location]);
		            request = request.Clone(redirectUri);
		        } else {
		            if (response.FinalUri != request.RequestUri) {
		                // Since we don't automatically follow redirects, there's only one scenario where this
		                // can happen: when the server sends a (non-redirecting) Content-Location header in the response.
		                // It's imperative that we do not trust that header though, so coerce the FinalUri to be
		                // what we just requested.
		                Logger.Http.WarnFormat("The response from {0} included an HTTP header indicating it's the same as {1}, but it's not a redirect so we won't trust that.", request.RequestUri, response.FinalUri);
		                response.FinalUri = request.RequestUri;
		            }

		            return response;
		        }
		    }
		    throw ErrorUtilities.ThrowProtocol(MessagingStrings.TooManyRedirects, originalRequestUri);
		}
开发者ID:Cyberlane,项目名称:DotNetOpenAuth,代码行数:38,代码来源:UntrustedWebRequestHandler.cs


注:本文中的System.Net.HttpWebRequest.Clone方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。