本文整理汇总了C#中System.Net.WebRequest.Execute方法的典型用法代码示例。如果您正苦于以下问题:C# WebRequest.Execute方法的具体用法?C# WebRequest.Execute怎么用?C# WebRequest.Execute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Net.WebRequest
的用法示例。
在下文中一共展示了WebRequest.Execute方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Execute
public virtual IPromise<IHttpResponse> Execute(string method, string baseUrl, QueryString queryString, System.Net.ICredentials credentials, bool async, Action<IHttpRequest> configure)
{
var uri = baseUrl + (queryString == null ? "" : queryString.ToString());
var req = (HttpWebRequest)System.Net.WebRequest.Create(uri);
req.AllowAutoRedirect = this.AllowAutoRedirect;
if (this.AutomaticDecompression) req.AutomaticDecompression = (DecompressionMethods.GZip | DecompressionMethods.Deflate);
if (this.StoreCookies) req.CookieContainer = _cookieContainer;
req.Method = method;
req.ReadWriteTimeout = 300000;
req.Timeout = DefaultTimeout;
if (method == "POST")
{
req.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
}
req.Credentials = credentials;
var result = new WebRequest(req, this.Compression);
if (configure != null) configure.Invoke(result);
var st = Stopwatch.StartNew();
return result.Execute(async).Convert(r => {
if (r.Core.Cookies.Count > 0) SetCookies(r.Core.Cookies);
return (IHttpResponse)r;
}).Always(() => {
st.Stop();
_httpTracing.TraceData(TraceEventType.Verbose, 0, st.ElapsedMilliseconds);
});
}
示例2: CheckAuthentication
private IPromise<AuthenticationSchemes> CheckAuthentication(Vault vault, bool async)
{
var result = new Promise<AuthenticationSchemes>();
if (vault.Authentication == AuthenticationSchemes.None && _conn.Version >= 11)
{
var hReq = (HttpWebRequest)System.Net.WebRequest.Create(vault.Url);
hReq.Credentials = null;
hReq.UnsafeAuthenticatedConnectionSharing = true;
hReq.Method = "HEAD";
var req = new WebRequest(hReq, CompressionType.none);
result.CancelTarget(
req.Execute(async)
.Progress((p, m) => result.Notify(p, m))
.Done(r =>
{
vault.Authentication = AuthenticationSchemes.Anonymous;
result.Resolve(vault.Authentication);
}).Fail(ex =>
{
var webEx = ex as HttpException;
if (webEx != null && webEx.Response.StatusCode == HttpStatusCode.Unauthorized)
{
vault.Authentication = req.CheckForNotAuthorized(webEx.Response);
result.Resolve(vault.Authentication);
}
else
{
result.Reject(ex);
}
}));
}
else
{
result.Resolve(AuthenticationSchemes.Anonymous);
}
return result;
}
示例3: Upload
public IPromise<Stream> Upload(UploadCommand upload, bool async)
{
// Files need to be uploaded, so build the vault request
// Compile the headers and AML query into the appropriate content
var multiWriter = new MultiPartFormWriter(async, _conn.AmlContext.LocalizationContext);
multiWriter.AddFiles(upload);
_conn.SetDefaultHeaders(multiWriter.WriteFormField);
multiWriter.WriteFormField("SOAPACTION", upload.Action.ToString());
multiWriter.WriteFormField("VAULTID", upload.Vault.Id);
multiWriter.WriteFormField("XMLdata", "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:i18n=\"http://www.aras.com/I18N\"><SOAP-ENV:Body><ApplyItem>" +
upload.ToNormalizedAml(_conn.AmlContext.LocalizationContext) +
"</ApplyItem></SOAP-ENV:Body></SOAP-ENV:Envelope>");
// Transform the vault URL (as necessary)
var urlPromise = upload.Vault.Url.IndexOf("$[") < 0 ?
Promises.Resolved(upload.Vault.Url) :
_conn.Process(new Command("<url>@0</url>", upload.Vault.Url)
.WithAction(CommandAction.TransformVaultServerURL), async)
.Convert(s => s.AsString());
//GetResult("TransformVaultServerURL", "<url>" + upload.Vault.Url + "</url>", async);
return urlPromise.Continue(u =>
{
// Determine the authentication used by the vault
if (u != upload.Vault.Url) upload.Vault.Url = u;
return CheckAuthentication(upload.Vault, async);
}).Continue(a =>
{
// Build the request to perform the upload
var hReq = (HttpWebRequest)System.Net.WebRequest.Create(upload.Vault.Url);
hReq.AllowWriteStreamBuffering = false;
hReq.Timeout = -1;
hReq.ReadWriteTimeout = 300000;
hReq.SendChunked = true;
hReq.Method = "POST";
hReq.KeepAlive = true;
hReq.ProtocolVersion = HttpVersion.Version11;
hReq.ContentType = multiWriter.ContentType;
hReq.ContentLength = multiWriter.GetLength();
hReq.CookieContainer = upload.Vault.Cookies;
switch (a)
{
case AuthenticationSchemes.Negotiate:
hReq.PreAuthenticate = true;
hReq.UnsafeAuthenticatedConnectionSharing = true;
break;
case AuthenticationSchemes.Ntlm:
hReq.UnsafeAuthenticatedConnectionSharing = true;
break;
case AuthenticationSchemes.Basic:
hReq.PreAuthenticate = true;
break;
}
var req = new WebRequest(hReq, _conn.Compression);
foreach (var ac in _conn.DefaultSettings)
{
ac.Invoke(req);
}
if (upload.Settings != null) upload.Settings.Invoke(req);
//hReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.1.4322)";
req.SetContent(multiWriter.WriteToRequest);
return req.Execute(async);
}).Convert(r => r.AsStream);
}
示例4: DownloadFileFromVault
private IPromise<WebResponse> DownloadFileFromVault(IReadOnlyItem fileItem, Vault vault, bool async, Command request)
{
var url = vault.Url;
if (string.IsNullOrEmpty(url)) return null;
var urlPromise = url.IndexOf("$[") < 0 ?
Promises.Resolved(url) :
_conn.Process(new Command("<url>@0</url>", url)
.WithAction(CommandAction.TransformVaultServerURL), async)
.Convert(s => s.AsString());
return urlPromise.Continue<string, WebResponse>(u =>
{
if (u != vault.Url) vault.Url = u;
var uri = new Uri(string.Format("{0}?dbName={1}&fileId={2}&fileName={3}&vaultId={4}",
u, _conn.Database, fileItem.Id(),
HttpUtility.UrlEncode(fileItem.Property("filename").Value),
vault.Id));
var req = (HttpWebRequest)System.Net.WebRequest.Create(uri);
req.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
req.Credentials = CredentialCache.DefaultCredentials;
req.Method = "GET";
req.Proxy.Credentials = CredentialCache.DefaultCredentials;
req.Timeout = -1;
_conn.SetDefaultHeaders((k, v) => { req.Headers.Set(k, v); });
req.Headers.Set("VAULTID", vault.Id);
var result = new WebRequest(req, _conn.Compression);
foreach (var a in _conn.DefaultSettings)
{
a.Invoke(result);
}
if (request.Settings != null) request.Settings.Invoke(result);
return result.Execute(async);
});
}