Tag: httpwebrequest

在C#中保持http连接存活?

如何在C#中保持连接存活? 我做得不对。 我想创建一个HttpWebRequest obj并使用它来转到我需要的任何URL? 我没有看到一种方法来访问除了HttpWebRequest.Create静态方法之外的URL。 如何创建连接,保持连接,浏览页面上的多个页面/媒体并支持代理? (我听说代理很容易,支持几乎是标准的吗?) – 编辑 – 很好的答案。 我如何申请第二个url? { HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create(“http://google.com”); WebRequestObject.KeepAlive = true; //do stuff WebRequestObject.Something(“http://sofzh.miximages.com/c%23/logo.gif”); }

HttpWebRequest.GetResponse()与GetResponseAsync()中的超时行为

当我尝试以下代码时: var request = (HttpWebRequest)HttpWebRequest.Create(url); request.Timeout = 3; // a small value var response = request.GetResponse(); Console.WriteLine(response.ContentLength); 对于我知道加载超过3毫秒的URL(我在Application_BeginRequest放置一个Thread.Sleep(110000) )它工作正常WebException预期抛出WebException 。 问题是当我切换到异步方法时: var response = request.GetResponseAsync().Result; 要么 var response = await request.GetResponseAsync(); 此异步版本完全忽略任何超时值,包括ReadWriteTimeout和ServicePoint.MaxIdleTime 我在MSDN的GetResponseAsync()找不到关于Timeout的任何内容现在我想知道它是否是GetResponseAsync()中的错误或者我在这里使用async的方式有什么问题?

除非fiddler正在运行,否则HttpWebRequest不起作用

这可能是我遇到过的最棘手的问题。 我有一段代码将POST提交到url。 当fiddler没有运行时,代码不起作用也不会抛出任何exception。但是,当fiddler运行时,代码会成功发布数据。 我可以访问post页面,所以我知道数据是否已被POSTED。 这可能是非常无意义的,但这是我遇到的情况,我很困惑。 byte[] postBytes = new ASCIIEncoding().GetBytes(postData); HttpWebRequest req = (HttpWebRequest)WebRequest.Create(“http://myURL); req.UserAgent = “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10”; req.Accept = “application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5”; req.Headers.Add(“Accept-Charset”, “ISO-8859-1,utf-8;q=0.7,*;q=0.3”); req.Headers.Add(“Accept-Language”, “en-US,en;q=0.8”); req.Method = “POST”; req.ContentType = “application/x-www-form-urlencoded”; req.ContentLength = postBytes.Length; req.CookieContainer = cc; Stream s = req.GetRequestStream(); s.Write(postBytes, 0, postBytes.Length); […]

如何将CookieCollection插入CookieContainer?

在我收到httpwebrequest的回复后,我希望获得的cookie可以保存,以便在另一个httbwebrequest中使用它们。 但是,我需要将CookieCollection插入CookieContainer。 我怎么做? 试图做: request.Cookiecontainer.add(response.Cookies); 但这样可以避免错误:对象引用未设置为对象的实例。

像C#一样在网页上发送POST请求吗?

可能重复: 如何在C#中模拟浏览器HTTP POST请求并捕获结果 我的网页上有以下表格…… 我使用这些登录我的网站。 但我想在我的应用程序中提供此function。 如何使用HTTP Web请求将用户和密码发送到我的validation页面?

以编程方式获取.ASPXAUTH cookie值

有没有办法以编程方式获取.ASPXAUTH值。 示例我使用自己的凭据(POST)登录到网站,然后读取响应…它不会返回我用于跟踪会话的CookieContainer中的.APSXAUTH。 任何人都有一个线索,我怎么能得到它并随后发送和发送它? [编辑]以下是我要做的更具体的事情: 将HTTP GET发送到页面。 读取_VIEWSTATE等值 将HTTP POST发送到“登录”页面。 它包括登录信息。 服务器向某个默认页面发送302响应(重定向)。 应该包含表单身份validationcookie,但事实并非如此。 所以我认为跟踪会话可能有比这更好的方法: CookieContainer _cookieJar = new CookieContainer(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url); request.CookieContainer = _cookieJar;

401在SECOND HttpClient / HttpWebRequest上调用未授权

我有一个使用SharePoint 2010 REST API的应用程序。 在创建项目的过程中,有多个请求在彼此之后完成: 1呼叫:从列表中获取项目:成功 2呼叫:创建项目:401未经授权 如果我这样做,这是相同的: 1呼叫:创建项目:成功 2呼叫:删除项目:401未经授权 我所知道的是,我的function是分开工作的,当它们相互呼叫时它们不起作用。 当我在创建项目后关闭应用程序(Windows Phone 8.1应用程序)并重新启动时尝试删除它的工作项目。 首先我认为它与处理我的字段的方式有关,所以我在finally语句中将它们更改为NULL但是这不起作用。 public async Task CreateNewItem(NewItem myNewItem) { try { StatusBar statusBar = await MyStatusBar.ShowStatusBar(“Creating new List Item.”); //Retrieving Settings from Saved file mySettings = await MyCredentials.GetMySettings(); myCred = new NetworkCredential(mySettings.UserName, mySettings.Password, mySettings.Domain); using (var handler = new HttpClientHandler { Credentials = […]

C#.NET使用HttpWebRequest将文件上载到Web表单

有没有人在C#中使用HttpWebRequest将文件从本地驱动器提交到multipart / form-data Web表单?

C#HttpWebRequest网站登录

我正在尝试从Web浏览器控件切换到http请求以自动执行任务以提高速度。 使用此function,我可以发布数据并接收登录页面,但不会返回任何cookie并将其添加到cookie列表中,因此登录的会话不会传递给下一个请求。 //an example call test(“http://websitename.com/loginpage.php”, “username=foo&password=123456”); private string test(string url, string data) { string responseFromServer; byte[] byteArray; Stream dataStream; HttpWebRequest request; HttpWebResponse response; StreamReader reader; responseFromServer = string.Empty; try { request = WebRequest.Create(url) as HttpWebRequest; request.Method = “POST”; request.KeepAlive = true; request.ContentType = “application/x-www-form-urlencoded”; byteArray = Encoding.UTF8.GetBytes(data); request.ContentLength = byteArray.Length; request.CookieContainer = new CookieContainer(); […]

在ASP.NET中并行执行.NET HttpWebRequests的建议

我有一个ASP.NET MVC Web应用程序,可以对其他服务器进行REST样式的Web服务调用。 我有一个场景,我正在对两个单独的服务进行两次HttpWebRequest调用。 我需要他们两个完成继续,但他们的顺序无关紧要。 它们可能每个需要1-2秒,我现在按顺序运行它们。 并行运行会减少用户响应时间,但最好的方法是什么? 在研究这个时,我可以想到几个选择: 在主线程上执行一个请求,并为另一个请求启动第二个线程。 应该创建新线程还是使用线程池? 如果我使用游泳池,我该如何调整尺寸? 另外,不知道如何将线程重新连接在一起(例如使用ThreadPool.RegisterWaitForSingleObject )? 尝试并利用内置的IAsyncResult支持一个或两个请求。 同样,不确定异步请求在哪些线程上执行,因此不确定如何调整线程池的大小。 如何将IAsyncResult加入我的主线程? 所有的例子我都在回调中找到了进程信息,但是我可以在主线程中等待并使用IsCompleted属性? 我需要找到一个既能运作又能大规模运行的解决方案。 这就是我担心线程池大小的原因。 我不愿意阻止请求,因为他们正在等待可用的线程。