Tag: httpwebrequest

如何在Http响应完成之前读取响应流

使用HttpWebRequest对象发出请求时,我需要调用方法GetResponse()来发送请求并获取响应。 此方法的问题在于,在收到所有数据之前,它不会返回响应对象。 假设我正在下载一个100 MB的文件,在响应完成并且下载了所有100 MB之前,我将无法读取它。 我想要的是能够在它们到达时立即读取响应流字节,而无需等待响应完成。 我知道我可以使用Range Http标头,但它不适用于我的情况。

此流不支持搜索操作。 HttpWebResponse

我正在制作一个通过http下载文件的程序。 我已经下载了,但是我希望能够暂停下载,关闭程序并在以后再次恢复它们。 我知道我从下载它们的位置支持这个。 我正在通过HttpWebResponse下载文件,并使用GetResponseStream将响应读入流中。 当我关闭应用程序并重新启动它时,我不知道如何恢复下载。 我已尝试在流上进行搜索,但它表示不支持。 最好的方法是什么?

HttpWebRequest错误:503服务器不可用

我正在使用HttpWebRequest,执行GetResponse()时出错。 我用这个代码: private void button1_Click(object sender, EventArgs e) { Uri myUri = new Uri(“http://www.google.com/sorry/?continue=http://www.google.com/search%3Fq%3Dyamaha”); // Create a ‘HttpWebRequest’ object for the specified url. HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(myUri); // Set the user agent as if we were a web browser myHttpWebRequest.UserAgent = @”Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4″; HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); […]

如果内容长度> 7kb使用C#,则无法在WebRequest上发布

我正在尝试将Json发布到我们的Web服务。 我的问题是,当我的request.ContentLength超过7kb时。 我将在request.GetResponse()处获得Webexception500。 但是如果我的request.ContentLength低于7kb,我的post就成功发送了。 错误信息: The remote server returned an error: (500) Internal Server Error. 源代码: public static string JsonPost(string url, string method, string postData) { Uri address = new Uri(url + method); HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; request.Method = “POST”; request.ContentType = “application/json”; byte[] byteData = UTF8Encoding.UTF8.GetBytes(postData); request.ContentLength = byteData.Length; using (Stream postStream […]

Web响应状态代码

我有这个简单的函数来获取HTML页面并将其作为字符串返回; 虽然有时我得到404.如果请求成功,我怎么才能返回HTML字符串,当它是404或任何其他错误状态代码时返回BadRequest之类的东西? public static string GetPageHTML(string link) { using (WebClient client= new WebClient()) { return client.DownloadString(link); } }

HttpWebRequest接受500内部服务器错误

这是我的代码: HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest; WebResponse wr = req.GetResponse(); 当服务器返回500内部服务器错误时,req.GetResponse()中会抛出exception。 我希望GetResponse()接受此响应代码,传递的url抛出此响应代码是正常的。 尽管响应代码500内部服务器错误,我想解析Html。 是否可以说GetResponse()方法不validation响应代码?

HttpWebRequest初始化 – 从未收到响应

我目前正致力于应用Windows Phone 7的应用程序,该应用程序应检索SHOUTcast流(受此问题的启发)。 流位置由IP地址和端口表示。 以下是SHOUTcast流URL的示例:http: //78.159.104.183 : 80 我正在尝试创建一个HttpWebRequest来从流中获取数据: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(“http://78.159.104.183:80”) ; 初始化请求后,我试图通过异步回调获得响应: request.BeginGetResponse(new AsyncCallback(GetShoutAsync), request); GetShoutAsync看起来像这样: void GetShoutAsync(IAsyncResult res) { HttpWebRequest request = (HttpWebRequest)res.AsyncState; HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(res); } 当我构建项目并运行它时,它会到达初始化请求的程度,但永远不会调用回调。 我注意到一件有趣的事情 – SHOUTcast实现了一种技术,当用户尝试导航到流URL时,服务器会检测到用户代理,如果是Web浏览器,它只会显示一个HTML页面而不是传递application / octet流内容。 如果在流URL的末尾使用斜杠和分号,您仍然可以直接接收流:http: //78.159.104.183 : 80 /; 但是,在我的应用程序中,我无法得到响应 – 似乎永远无法达到回调。 我尝试通过将用户代理直接传递给HttpWebRequest来伪造用户代理: request.UserAgent = “Mozilla/5.0 (Windows; U; Windows NT 5.1; […]

添加Interval时,HttpWebRequest会变慢

测试下载网页源的不同可能性我得到了以下结果(google.com,9gag.com的平均时间毫秒): 普通的HttpWebRequest:169,360 Gzip HttpWebRequest:143,260 WebClient GetStream:132,295 WebClient DownloadString:143,389 所以对于我的9gag客户端,我决定采用gzip HttpWebRequest。 问题是,在我的实际程序中实现后,请求所需的时间超过两倍。 只在两个请求之间添加Thread.Sleep时也会出现问题。 编辑: 刚刚改进了一些代码,仍然是同样的问题:当我在循环中运行时,当我在请求之间添加延迟时,请求需要更长的时间 for(int i = 0; i < 100; i++) { getWebsite("http://9gag.com/"); } 每个请求大约需要250毫秒。 for(int i = 0; i < 100; i++) { getWebsite("http://9gag.com/"); Thread.Sleep(1000); } 每个请求大约需要610毫秒。 private string getWebsite(string Url) { Stopwatch stopwatch = Stopwatch.StartNew(); HttpWebRequest http = (HttpWebRequest)WebRequest.Create(Url); http.AutomaticDecompression = DecompressionMethods.GZip […]

提交Web表单并获取C#中的响应数据

我正在尝试编写一个C#应用程序,它可以自动发送用户ID,密码和登录(提交“登录”按钮)到网站(例如http://abc.com )并获取Httprequest中返回的数据。 我怎么做? 我在坚持……感谢您的推荐! :d

当在多个线程内使用时,HttpWebResponse会混淆

在我的应用程序中,我有一些线程将从Web服务获取数据。 基本上我只是打开一个URL并获得XML输出。 我有几个线程持续执行此操作,但具有不同的URL。 有时结果会混淆不清。 XML输出不属于线程的URL,而属于另一个线程的URL。 在每个线程中,我创建了类GetWebPage的实例,并从此实例调用方法Get。 该方法非常简单,主要基于MSDN文档中的代码。 (见下文。我在这里删除了我的error handling!) public string Get(string userAgent, string url, string user, string pass, int timeout, int readwriteTimeout, WebHeaderCollection whc) { string buffer = string.Empty; HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(url); if (!string.IsNullOrEmpty(userAgent)) myWebRequest.UserAgent = userAgent; myWebRequest.Timeout = timeout; myWebRequest.ReadWriteTimeout = readwriteTimeout; myWebRequest.Credentials = new NetworkCredential(user, pass); string[] headers = whc.AllKeys; foreach […]