Tag: httpwebrequest

如何在没有浏览器的情况下与网站进行互动?

说我正在构建ac#应用程序。 申请目的: 从用户获取用户名和密码。 并显示网站上的一些信息。 在后台,在获取用户名和密码后,它应该: 使用这些凭据登录网站。 并单击登录后显示的锚链接。 找出保存信息的范围。 得到信息。 这是一个例子。 我实际上正在构建一个应用程序来显示带宽使用信息。 服务器不会为此公开任何API。 是否有任何教程/信息/文章可用于类似目的? 我只是不寻找什么?

阅读HttpwebResponse json响应,C#

在我的一个应用程序中,我收到了来自webrequest的回复。 该服务是Restful服务,将返回类似于以下JSON格式的结果: { “id” : “1lad07”, “text” : “test”, “url” : “http:\/\/twitpic.com\/1lacuz”, “width” : 220, “height” : 84, “size” : 8722, “type” : “png”, “timestamp” : “Wed, 05 May 2010 16:11:48 +0000”, “user” : { “id” : 12345, “screen_name” : “twitpicuser” } } 这是我目前的代码: byte[] bytes = Encoding.GetEncoding(contentEncoding).GetBytes(contents.ToString()); request.ContentLength = bytes.Length; using (var requestStream = […]

ASP.NET HTTP授权标头

我想知道为什么我的asp.net应用程序在命名为“授权”时不会将标题添加到我的post中,但是当我更改一个字符时,它会正常工作,比如说“授权”。 在其他网站的文档中,他们总是使用“授权”这个名称,所以我也想,在这一点上,我只想说明原因。 我已经阅读了一些关于此的主题,但没有找到任何合理的原因。 这是我的代码如下: string fileName = “c:\\xyz.xml”; string uri = “http://myserver/Default.aspx”; req = WebRequest.Create(uri); req.Method = “POST”; req.ContentType = “text/xml”; byte[] authBytes = Encoding.UTF8.GetBytes(“DDSServices:jCole2011”.ToCharArray()); req.Headers.Add(“Authorization”, “BASIC ” + Convert.ToBase64String(authBytes) ); req.Headers.Add(“test”, “test”); UTF8Encoding encoder = new UTF8Encoding(); byte[] data = encoder.GetBytes(this.GetTextFromXMLFile(fileName)); req.ContentLength = data.Length; Stream reqStream = req.GetRequestStream(); reqStream.Write(data, 0, data.Length); reqStream.Close(); req.Headers.Add(“Authorization”, “BASIC” […]

HttpWebRequest如何处理(过早)关闭底层TCP连接?

在使用.NET的HttpWebRequest类调用远程服务器(特别是REST Web服务)时,我很难搞清楚是否有办法处理潜在的连接问题。 从我的调查来看,WebClient类的行为是相同的,这是有点预期的,因为它似乎只提供了一个更简单的HttpWebRequest接口。 出于模拟目的,我编写了一个非常简单的HTTP服务器,它不符合HTTP 1.1 RFC。 它的作用是接受客户端连接,然后发送适当的HTTP 1.1头和“Hello World!”。 有效负载返回客户端并关闭套接字,服务器端接受客户端连接的线程如下所示: private const string m_defaultResponse = “Hello World!”; private void Listen() { while (true) { using (TcpClient clientConnection = m_listener.AcceptTcpClient()) { NetworkStream stream = clientConnection.GetStream(); StringBuilder httpData = new StringBuilder(“HTTP/1.1 200 OK\r\nServer: ivy\r\nContent-Type: text/html\r\n”); httpData.AppendFormat(“Content-Length: {0}\r\n\r\n”, m_defaultResponse.Length); httpData.AppendFormat(m_defaultResponse); Thread.Sleep(3000); // Sleep to simulate latency stream.Write(Encoding.ASCII.GetBytes(httpData.ToString()), 0, […]

如何以编程方式登录wordpress?

我需要以编程方式在wordpress管理面板中执行某些操作,但无法管理如何使用C#和HttpWebRequest登录到Wordpress。 这是我做的: private void button1_Click(object sender, EventArgs e) { string url = “http://localhost/wordpress/wp-login.php”; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); CookieContainer cookies = new CookieContainer(); SetupRequest(url, request, cookies); //request.Accept = “text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”; //request.Headers[“Accept-Language”] = “uk,ru;q=0.8,en-us;q=0.5,en;q=0.3”; //request.Headers[“Accept-Encoding”] = “gzip,deflate”; //request.Headers[“Accept-Charset”] = “windows-1251,utf-8;q=0.7,*;q=0.7”; string user = “test”; string pwd = “test”; request.Credentials = new NetworkCredential(user, pwd); string data = string.Format( “log={0}&pwd={1}&wp-submit={2}&testcookie=1&redirect_to={3}”, […]

如何将凭据传递给httpwebrequest以访问SharePoint库

我正在尝试使用HttpWebRequest从SharePoint文档库中读取文件。 为了做到这一点,我必须传递一些凭据。 我正在使用以下请求: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = “GET”; request.ContentType = “application/msexcel”; request.UserAgent = “Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0”; request.Credentials = new NetworkCredential(UserName, PassWord); 这是传递凭据的正确方法吗?

网络使用HttpWebRequest进行身份validation和网站身份validation

我正在尝试创建一个使用.NET Framework消费RSS数据的应用程序。 RSS站点需要用户名和密码才能开始。 并且我在我的工作场所运行此应用程序,这需要NTLM身份validation才能连接到Internet。 以下是我尝试使用的代码 NetworkCredential nc = new NetworkCredential(“SITEUSERNAME”, “SITEPASSWORD”); CredentialCache cache = new CredentialCache(); cache.Add(new Uri(RSSFeed), “Basic”, nc); cache.Add(new Uri(RSSFeed), “Ntlm”, new NetworkCredential(“USERNAME”,”PASSWORD”,”DOAMIN”)); HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(RSSFeed); myHttpWebRequest.Proxy.Credentials = cache; HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 我得到407错误,如果我只是使用CredentialCache.DefaultNetworkCredentials我得到401错误。

如何在不中断async / await的情况下创建HttpWebRequest?

我有一堆慢function,基本上是这样的: private async Task<List> DownloadSomething() { var request = System.Net.WebRequest.Create(“https://valid.url”); … using (var ss = await request.GetRequestStreamAsync()) { await ss.WriteAsync(…); } using (var rr = await request.GetResponseAsync()) using (var ss = rr.GetResponseStream()) { //read stream and return data } } 除了调用WebRequest.Create之外,这很好地和异步地工作 – 这一行将UI线程冻结几秒钟,这会破坏async / await的目的。 我已经使用BackgroundWorker编写了这个代码,它完美运行并且永远不会冻结UI。 但是, 创建与async / await相关的Web请求的正确,惯用方法是什么? 或者也许应该使用另一个类? 我已经看到了关于异步化WebRequest 这个很好的答案 ,但即使在那里,对象本身也是同步创建的。

HttpWebResponse:关闭流

我从HttpWebRequest (使用修改后的版本Jeff Richter的CCR包装器 )获得响应,然后检查一些标头以决定是否继续下载。 有时我可能不想继续,所以我因此发出response.Close和request.Abort 。 是否有必要发出GetResponseStream然后关闭流,或者当调用response.Close时这是隐式的吗? 发出GetResponse后, 文档说明 : 您必须调用Close方法来关闭流并释放连接。 如果不这样做可能会导致您的应用程序用完连接。 那么这是否意味着一旦我们得到响应,那么获取流并关闭它是必须的吗? 我们看到一些相当奇怪的问题,其中挂起的下载最终会淹没系统。 这似乎是资源泄漏的最强候选者,但想知道是否有其他人有这个问题的经验。 旁白:假设它是同一个流,GetResponseStream是否安全两次?

通过HttpWebRequest传递二进制数据

使用.Net,我想通过HttpWebRequest传递一些二进制数据(一些序列化对象)。 我可以将它放在请求流上,还是需要将其编码为base64字符串? 我的意思是,如果我有: byte[] data = new byte[1000]; GetSomeStrangeData(data); 我是否需要使用Convert.ToBase64String或者我可以将它从HttpWebRequest.GetRequestStream写入流中吗? 后人: http://tools.ietf.org/html/rfc2616 http://msdn.microsoft.com/en-us/library/d4cek6cc.aspx http://www.wireshark.org/ http://www.fiddler2.com