Tag: webrequest

使用C#和WebRequest上传图像?

这是Python中的工作代码(使用cURL): #!/usr/bin/python import pycurl c = pycurl.Curl() values = [ (“key”, “YOUR_API_KEY”), (“image”, (c.FORM_FILE, “file.png”))] # OR: (“image”, “http://example.com/example.jpg”))] # OR: (“image”, “BASE64_ENCODED_STRING”))] c.setopt(c.URL, “http://imgur.com/api/upload.xml”) c.setopt(c.HTTPPOST, values) c.perform() c.close() 这是我在C#中所拥有的: public void UploadImage() { //I think this line is doing something wrong. //byte[] x = File.ReadAllBytes(@”C:\Users\Sergio\documents\visual studio 2010\Projects\WpfApplication1\WpfApplication1\Test\hotness2.jpg”); //If I do it like this, using […]

将HTTP身份validation与C#WebRequest一起使用

我想向需要身份validation的页面发出Web请求。 我该怎么做呢? 我找到了一些可能使用Credentials属性的东西,但我不确定如何使用它。

如何使用HttpWebRequest进行摘要式身份validation?

我发现的各种文章( 1,2 )使这看起来很容易: WebRequest request = HttpWebRequest.Create(url); var credentialCache = new CredentialCache(); credentialCache.Add( new Uri(url), // request url “Digest”, // authentication type new NetworkCredential(“user”, “password”) // credentials ); request.Credentials = credentialCache; 但是,这仅适用于没有URL参数的URL。 例如,我可以下载http://example.com/test/xyz.html ,但是当我尝试下载http://example.com/test?page=xyz ,结果是400 Bad Request消息在服务器的日志中运行以下内容(运行Apache 2.2): Digest: uri mismatch – does not match request-uri 我的第一个想法是摘要规范要求从摘要哈希中删除URL参数 – 但是从传递给credentialCache.Add()的URL中删除参数并没有改变。 所以它必须是相反的方式,在.NET框架中的某个地方错误地从URL中删除参数。

我可以使用.NET Framework从指定的IP地址发送webrequest吗?

我有一个多IP地址的服务器。 现在我需要使用http协议与多个服务器通信。 每个服务器只接受来自我的服务器的指定IP地址的请求。 但是在.NET中使用WebRequest(或HttpWebRequest)时,请求对象将自动选择IP地址。 无论如何我都找不到用地址绑定请求。 反正有没有这样做? 或者我必须自己实施webrequest课程?

HttpWebRequest或WebRequest – 继续下载ASP.NET

我想知道是否有办法知道服务器是否支持简历下载function,如果支持,我该如何发送恢复请求? 我正在寻找一个解决方案,我的ASP.NET页面可以从服务器下载到我的,像今天的“ rapidleech ”这样的东西,但我想检查我请求下载的服务器是否支持恢复function。

C#:使用超时下载URL

在.NET中最好的方法是什么? 我总是忘记我需要Dispose() (或using包装)。 编辑:经过很长一段时间使用WebRequest ,我发现了自定义WebClient 。 好多了。

WebRequest“HEAD”轻量级替代品

我最近发现以下内容不适用于某些网站,例如IMDB.com。 class Program { static void Main(string[] args) { try { System.Net.WebRequest wc = System.Net.WebRequest.Create(“http://www.imdb.com”); //args[0]); ((HttpWebRequest)wc).UserAgent = “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19”; wc.Timeout = 1000; wc.Method = “HEAD”; WebResponse res = wc.GetResponse(); var streamReader = new System.IO.StreamReader(res.GetResponseStream()); Console.WriteLine(streamReader.ReadToEnd()); } catch (Exception ex) { Console.WriteLine(ex.Message); } } […]

C#WebRequest.getResponse():400错误请求

我试图使用System.Web从服务器下载文件。 它确实有效,但有些链接给我带来了麻烦。 链接看起来像这样: http://cdn.somesite.com/r1KH3Z%2FaMY6kLQ9Y4nVxYtlfrcewvKO9HLTCUBjU8IBAYnA3vzE1LGrkqMrR9Nh3jTMVFZzC7mxMBeNK5uY3nx5K0MjUaegM3crVpFNGk6a6TW6NJ3hnlvFuaugE65SQ4yM5754BM%2BLagqYvwvLAhG3DKU9SGUI54UAq3dwMDU%2BMl9lUO18hJF3OtzKiQfrC/the_file.ext 代码看起来基本上是这样的: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(link); WebResponse response = request.getResponse(); getResponse()始终抛出exception(错误400错误请求)。 但是,我知道该链接有效,因为我可以使用Firefox下载该文件而不会出现问题。 我还尝试用Uri.UnescapeDataString(链接)解码链接,但该链接甚至不能在Firefox中工作。 其他链接以这种方式完美地工作..只是这些不起作用。 编辑: 好的,我发现了一些使用wireshark的东西: 如果我使用Firefox打开链接,则发送: &ME3@”dM*PNyAo PA:]GET /r1KH3Z%2FaMY6kLQ9Y4nVxYp5DyNc49t5kJBybvjbcsJJZ0IUJBtBWCgri3zfTERQught6S8ws1a%2BCo0RS5w3KTmbL7i5yytRpn2QELEPUXZTGYWbAg5eyGO2yIIbmGOcFP41WdrFRFcfk4hAIyZ7rs4QgbudzcrJivrAaOTYkEnozqmdoSCCY8yb1i22YtEAV/epd_outpost_12adb.flv HTTP/1.1 Host: cdn.somesite.com User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive 我认为只有第一行是问题,因为WebRequest.Create(link)解码了url: &MEz.@!dM/nP9@~P>.GET /r1KH3Z/aMY6kLQ9Y4nVxYp5DyNc49t5kJBybvjbcsJJZ0IUJBtBWCgri3zfTERQught6S8ws1a%2BCo0RS5w3KTmbL7i5yytRpn2QELEPUXZTGYWbAg5eyGO2yIIbmGOcFP41WdrFRFcfk4hAIyZ7rs6Mmh1EsQQ4vJVYUwtbLBDNx9AwCHlWDfzfSWIHzaaIo/epd_outpost_12adb.flv HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0 […]

在c#中multithreading处理大量Web请求

我有一个程序,我需要在外部sharepoint站点创建一些大量的文件夹(外部意思是我不能使用sharepoint对象模型)。 Web请求适用于此,但只需一次执行一个(发送请求,等待响应,重复)相当慢。 我决定multithreading化请求,试图加快速度。 该程序已大大加快,但经过一段时间(1-2分钟左右)后,并发exception开始被抛出。 代码如下,这是最好的方法吗? Semaphore Lock = new Semaphore(10, 10); List folderPathList = new List(); //folderPathList populated foreach (string folderPath in folderPathList) { Lock.WaitOne(); new Thread(delegate() { WebRequest request = WebRequest.Create(folderPath); request.Credentials = DefaultCredentials; request.Method = “MKCOL”; WebResponse response = request.GetResponse(); response.Close(); Lock.Release(); }).Start(); } for(int i = 1;i <= 10;i++) { Lock.WaitOne(); } […]

是什么让这个HTTPS WebRequest即使在浏览器中运行也会超时?

这是我的要求: var request = (HttpWebRequest) WebRequest.Create(“https://mtgox.com/”); request.CookieContainer = new CookieContainer(); request.AllowAutoRedirect = false; request.Accept = “text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”; request.Headers[HttpRequestHeader.AcceptEncoding] = “gzip, deflate”; request.Headers[HttpRequestHeader.AcceptLanguage] = “en-gb,en;q=0.5”; request.Headers[HttpRequestHeader.AcceptCharset] = “ISO-8859-1,utf-8;q=0.7,*;q=0.7”; request.Timeout = 5000; request.UserAgent = “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0”; request.Method = “GET”; request.GetResponse(); 使用HttpFox从Firefox复制标题。 我使用Fiddler2来validation至少对于HTTP请求,标头在Firefox请求和我的请求之间是完全相同的。 但是,当使用HTTPS 对此特定网站执行请求时,请求会超时。 它适用于其他网站。 我必须以与Firefox不同的方式执行它,因为它始终适用于Firefox。 但是,我无法使用Fiddler2调试它,因为每当Fiddler2转发这些请求时,它们也会超时 ,即使是由Firefox发起的。 它只是一个非常错误的网站吗? 上面的哪一部分让我离开了不是Firefox?