标签: webclient

WebClient访问具有凭据的页面

我正在尝试访问同一域/同一个asp.net应用程序的网页,这是受密码保护的.对于发起此呼叫的网页和正在访问的网页,凭据都是相同的.

这是代码,我不知道为什么我总是以登录表单html代码结束?

using (WebClient client = new WebClient())
{
    client.QueryString.Add("ID", "1040"); //add parameters
    //client.Credentials = CredentialCache.DefaultCredentials;
    //I tried to add credentials like this
    client.Credentials = new NetworkCredential("username", "password");

    string htmlCode = client.DownloadString("http://domain.loc/testpage.aspx");
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net webclient credentials defaultnetworkcredentials

24
推荐指数
1
解决办法
7万
查看次数

如何检查System.Net.WebClient.DownloadData是否正在下载二进制文件?

我试图使用WebClientWinForms应用程序从Web下载文件.但是,我真的只想下载HTML文件.我想要忽略的任何其他类型.

我查了一下WebResponse.ContentType,但它的价值总是如此null.

任何人都知道原因是什么?

c# webclient file download

22
推荐指数
1
解决办法
5万
查看次数

当服务器具有有效的SSL证书时,使用带有"https"的WebClient.UploadFile()时,"握手失败...意外的数据包格式"

我试图使用WebClient.UploadFile与HTTPS URL,但我最终得到

"System.IO.IOException:由于意外的数据包格式,握手失败"

相同的代码与Http完全正常,但我想要的服务器有一个非常好的ssl证书.以下是与网络电话相关的任何内容:

var url = WebServiceCommunication.GetProtocolName() + "..."; //turns out to be     "https://...
var wc = new WebClient();
//I am adding: 
wc.Headers.Add(HttpRequestHeader.KeepAlive, "...")
wc.Headers.Add(HttpRequestHeader.AcceptLanguage, "...")
we.Headers.Add(HttpRequestHeader.Cookie, "...")

wc.UploadFile(url, "POST", filename);
Run Code Online (Sandbox Code Playgroud)

我正在添加和使用https的任何HttpRequestHeaders的问题是什么?或者,如果我想使用https,我是否错过了必要的标题?当SSL证书有效时,有没有人指出为什么这可以用于HTTP而不是HTTPS?

c# https webclient http visual-studio-2010

22
推荐指数
2
解决办法
4万
查看次数

如何设置WebClient Content-Type标头?

要连接到第三方服务,我需要制作一个Https Post.其中一个必备条件是发送自定义内容类型.

我正在使用WebClient,但我找不到如何设置它.我已经尝试创建一个新类并重写CreateRequest方法,但这会导致请求崩溃.

有没有办法做到这一点,而无需重写CopyHeadersTo方法?

提前致谢

编辑 CopyHeaderTo是我使用.NET Reflector看到的一种方法.它从GetWebRequest中取消,并从私有属性设置所有请求标头,包括Content-Type.

c# content-type webclient

21
推荐指数
3
解决办法
5万
查看次数

如何使用c#和WebClient类检查服务器上是否存在文件

在我的应用程序中,我使用WebClient类通过简单地调用DownloadFile方法从Web服务器下载文件.现在我需要在下载之前检查某个文件是否存在(或者我只是想确保它存在).我有两个问题:

  1. 在不通过线路传输大量数据的情况下检查服务器上是否存在文件的最佳方法是什么?(这是我需要检查的大量文件)
  2. 有没有办法在不下载的情况下获取给定远程文件的大小?

提前致谢!

c# webclient http file exists

20
推荐指数
2
解决办法
3万
查看次数

将WebClient与socks代理一起使用

有没有办法使用socks代理WebClient?特别DownloadString是它提供的方法?

我不想使用任何第三方的东西,如privoxy,freecap,我不能使用像Chilkat那样的商业库.我尝试使用来自http://www.mentalis.org/的东西,实际上我使用了它们的WebRequest实现,但它们似乎没有类似于WebClient的东西.

.net c# webclient socks webclient-download

20
推荐指数
5
解决办法
2万
查看次数

使用WebClient下载时获取原始文件名

当Uri不包含名称时,有没有办法知道使用WebClient下载的文件的原始名称?

例如,在下载源自事先不知道名称的动态页面的站点中会发生这种情况.

使用我的浏览器,该文件获取正确的名称.但是如何使用WebClient完成这项工作?例如

        WebClient wc= new WebClient();
        var data=   wc.DownloadData(@"www.sometime.com\getfile?id=123");
Run Code Online (Sandbox Code Playgroud)

使用DownloadFile()不是解决方案,因为此方法需要事先提供文件名.

.net c# webclient

20
推荐指数
2
解决办法
2万
查看次数

处理301重定向时的客户端Web浏览器行为

RFC似乎建议客户端永久缓存响应:http: //www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

10.3.2 301永久移动

已为所请求的资源分配了一个新的永久URI,并且此资源的任何将来的引用应该使用返回的URI之一.具有链接编辑功能的客户端应尽可能自动将对Request-URI的引用重新链接到服务器返回的一个或多个新引用.除非另有说明,否则该响应是可缓存的.

新的永久URI应该由响应中的Location字段给出.除非请求方法是HEAD,否则响应的实体应该包含一个带有指向新URI的超链接的短超文本注释.

如果收到301状态代码以响应GET或HEAD以外的请求,则用户代理不得自动重定向请求,除非用户可以确认,因为这可能会改变发出请求的条件.

  Note: When automatically redirecting a POST request after
  receiving a 301 status code, some existing HTTP/1.0 user agents
  will erroneously change it into a GET request.
Run Code Online (Sandbox Code Playgroud)

我很难找到任何主要浏览器的具体浏览器文档,说明他们如何处理这些.

我已经开始挖掘firefox的源代码,但很快就迷路了.

对于哪些(如果有的话)浏览器,以下情况是否属实,并且是否有适用于Firefox或IE的权威文档?:

第一次:

  • 1.1:用户输入指向站点A的链接,或点击指向站点A的链接
  • 1.2:浏览器首次解释站点A的链接,没有缓存.向站点A发送GET.
  • 1.2:站点A响应301重定向到站点B.
  • 1.3:浏览器向站点B发送GET.

任何后续时间:

  • 2.2:用户点击指向站点A的链接
  • 2.2:浏览器发现,由于过去的301重定向,站点A现在应该是站点B.
  • 2.3:如果没有在站点A发起任何请求,浏览器会在站点B发起GET.

  • firefox internet-explorer webclient behavior http-status-code-301

    19
    推荐指数
    1
    解决办法
    7944
    查看次数

    需要一些建议来尝试模拟.NET WebClient或等效的

    我有一些代码可以下载一些RSS源.

    我一直在使用WebClientArgotic.Syndication.RssFeed库.

    但这些都不可模糊:(

    我绝对不希望每次运行单元测试时都能看到真正的RSS提要.

    有没有人对我能做什么有任何建议?

    我需要创建一个邪恶的包装器吗?如果是这样..对此有何建议?

    .net c# webclient moq mocking

    19
    推荐指数
    2
    解决办法
    8038
    查看次数

    使用WebClient或HttpClient下载文件?

    我试图从URL下载文件,我必须在WebClient和HttpClient之间进行选择.我在互联网上引用了这篇文章和其他几篇文章.无处不在,由于其非常好的异步支持和其他.Net 4.5权限,建议使用HttpClient.但我仍然不完全相信并需要更多的投入.

    我使用下面的代码从互联网上下载文件:

    Web客户端:

    WebClient client = new WebClient();
    client.DownloadFile(downloadUrl, filePath);
    
    Run Code Online (Sandbox Code Playgroud)

    HttpClient的:

    using (HttpClient client = new HttpClient())
    {        
        using (HttpResponseMessage response = await client.GetAsync(url))
        using (Stream streamToReadFrom = await response.Content.ReadAsStreamAsync())
        {
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    从我的角度来看,我只能看到使用WebClient的一个缺点,那就是非异步调用,阻塞调用线程.但是,如果我不担心阻塞线程或使用client.DownloadFileAsync()异步支持,该怎么办?

    另一方面,如果我使用HttpClient,是不是我将文件的每个字节加载到内存中然后将其写入本地文件?如果文件太大,内存开销不会很贵吗?如果我们使用WebClient可以避免这种情况,因为它将直接写入本地文件而不会消耗系统内存.

    那么,如果性能是我的首要任务,我应该使用哪种方法进行下载?如果我的上述假设是错误的,我想澄清一下,我也愿意接受替代方法.

    .net c# rest webclient httpclient

    19
    推荐指数
    5
    解决办法
    4万
    查看次数