Tag: webrequest

在异步请求中使用超时回调

之前我问过这个问题,但我打算用提出的解决方案来完成这个问题并提出另一个问题。 我正在使用这个类来创建异步WebRequest : class HttpSocket { public static void MakeRequest(Uri uri, Action responseCallback) { WebRequest request = WebRequest.Create(uri); request.Proxy = null; Task asyncTask = Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null); ThreadPool.RegisterWaitForSingleObject((asyncTask as IAsyncResult).AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), request, 1000, true); asyncTask.ContinueWith(task => { WebResponse response = task.Result; Stream responseStream = response.GetResponseStream(); responseCallback(new RequestCallbackState(response.GetResponseStream())); responseStream.Close(); response.Close(); }); } private static void […]

HttpWebResponse在循环运行时卡住了

我构建此方法(c#)以便从URL接收HTTP响应状态代码。 当我运行这种方法时,它的工作正常,但是当我在一个循环中运行时,它第三次卡住了。 任何线索? public static string isAlive(string url) { Console.WriteLine(“start: Is Alive Test”); WebRequest request = WebRequest.Create(url); try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); return Convert.ToString((int)response.StatusCode); } catch(WebException ex) { HttpWebResponse res = (HttpWebResponse)ex.Response; return Convert.ToString((int)res.StatusCode); } } 循环 for (int i = 0; i < 5; i++) { string a = isAlive("https://www.yahoo.com/"); Console.WriteLine(a); }

通过http发送基本身份validation

我试图从需要基本身份validation的页面中读取源代码。 但是,在我的HttpWebRequest中使用Header甚至Credentials,我仍然会收到未经授权的exception[401]。 string urlAddress = URL; string UserName = “MyUser”; string Password = “MyPassword”; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress); if (UserName != string.Empty) { string encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding(“ISO-8859-1”).GetBytes(UserName + “:” + Password)); request.Headers.Add(“Authorization”, “Basic ” + encoded); System.Net.CredentialCache credentialCache = new System.Net.CredentialCache(); credentialCache.Add( new System.Uri(urlAddress), “Basic”, new System.Net.NetworkCredential(UserName, Password) ); request.Credentials = credentialCache; } HttpWebResponse response […]

使用.NET将文件发布到服务器HttpWebRequest或WebClient

好的,这是交易。 正如问题所述,我正在尝试将文件发布到网络服务器并且遇到一些问题。 我尝试使用Curl.exe将同一个文件发布到同一个Web服务器,并且没有任何问题。 我已经发布了我用curl的标志,因为他们可能会指出我遇到.NET类问题的任何潜在原因。 curl.exe –user “myUser:myPass” –header “Content-Type: application/gzip” –data-binary “@filename.txt.gz” –cookie “data=service; data-ver=2; date=20100212; time=0900; location=1234” –output “out.txt” –dump-header “header.txt” http://mysite/receive 我正在尝试使用像WebClient或HttpWebRequest这样的.NET类来做同样的事情。 这是我尝试过的代码示例。 使用WebClient,我得到505 HTTP版本不支持错误,并且使用HttpWebRequest我得到501 Not Implemented。 使用WebClient进行尝试时: public void sendFileClient(string path){ string url = “http://mysite/receive”; WebClient wc = new WebClient(); string USERNAME = “myUser”; string PSSWD = “myPass”; NetworkCredential creds = new […]

c#HttpWebRequest POST’ing失败

所以我想尝试将内容发布到网络服务器上。 System.Net.HttpWebRequest EventReq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(“url”); System.String Content = “id=” + Id; EventReq.ContentLength = System.Text.Encoding.UTF8.GetByteCount(Content); EventReq.Method = “POST”; EventReq.ContentType = “application/x-www-form-urlencoded”; System.IO.StreamWriter sw = new System.IO.StreamWriter(EventReq.GetRequestStream(), System.Text.Encoding.UTF8); sw.Write(Content); sw.Flush(); sw.Close(); 看起来没问题,我根据ENCODED数据的大小设置内容长度…无论如何,它在sw.flush()失败,“要写入流的字节数超过指定的内容长度大小” StreamWriter在我背后做了一些魔法,我不知道吗? 有没有办法让我了解StreamWriter正在做什么?

以编程方式登录Instagram

我正在尝试使用网络请求登录Instagram。 我很难理解发生了什么。 得到:远程服务器返回错误:(403)禁止。 到目前为止我所拥有的: public static string csrf; CookieContainer c1 = new CookieContainer(); private void button1_Click(object sender, EventArgs e) { string PostData = String.Format(“csrfmiddlewaretoken={0}&username=ra123&password=ra12345678”,getToken()); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(“https://instagram.com/accounts/login/”); req.Method = “POST”; req.ContentType = “application/x-www-form-urlencoded”; req.KeepAlive = true; req.AllowAutoRedirect = true; req.CookieContainer = c1; byte[] byteArray = Encoding.ASCII.GetBytes(PostData); req.ContentLength = byteArray.Length; Stream dataStream = req.GetRequestStream(); dataStream.Write(byteArray, […]

在WebRequest中发送gzip压缩数据?

我有大量的数据(~100k),我的C#app正在安装mod_gzip发送到我的Apache服务器。 我正在尝试使用System.IO.Compression.GZipStream首先gzip数据。 PHP接收原始的gzip压缩数据,因此Apache并没有像我期望的那样解压缩它。 我错过了什么吗? System.Net.WebRequest req = WebRequest.Create(this.Url); req.Method = this.Method; // “post” req.Timeout = this.Timeout; req.ContentType = “application/x-www-form-urlencoded”; req.Headers.Add(“Content-Encoding: gzip”); System.IO.Stream reqStream = req.GetRequestStream(); GZipStream gz = new GZipStream(reqStream, CompressionMode.Compress); System.IO.StreamWriter sw = new System.IO.StreamWriter(gz, Encoding.ASCII); sw.Write( large_amount_of_data ); sw.Close(); gz.Close(); reqStream.Close() System.Net.WebResponse resp = req.GetResponse(); // (handle response…) 我不完全确定“Content-Encoding:gzip”适用于客户端提供的头文件。

如何从c#获取网站标题

我正在重新审视我的旧代码并且偶然发现了一种基于其url获取网站标题的方法。 这并不是你所谓的稳定方法,因为它经常无法产生结果,有时甚至会产生不正确的结果。 此外,有时它无法显示标题中的某些字符,因为它们是替代编码。 有没有人有这个旧版本的改进建议? public static string SuggestTitle(string url, int timeout) { WebResponse response = null; string line = string.Empty; try { WebRequest request = WebRequest.Create(url); request.Timeout = timeout; response = request.GetResponse(); Stream streamReceive = response.GetResponseStream(); Encoding encoding = System.Text.Encoding.GetEncoding(“utf-8”); StreamReader streamRead = new System.IO.StreamReader(streamReceive, encoding); while(streamRead.EndOfStream != true) { line = streamRead.ReadLine(); if (line.Contains(“”)) […]

从Web服务实例化对象与从常规类实例化对象

我有一个非常基本的Web服务: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace WebService1 { /// /// Summary description for Service1 /// [WebService(Namespace = “http://tempuri.org/”)] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { public […]

HttpWebRequests在后续调用时失败

我知道这是一个模糊的问题,特别是因为我没有提供任何代码,但我正在开发一个.Net 2.0应用程序,我们有一个WebRequest,它将数据发布到内部构建的API。 奇怪的事情发生在我们的第3个(并且总是第3个)后续请求中,该请求在请求的GetRequestStream()方法中失败。 第一次和第二次被叫,一切都很好。 在第三次,它挂了一点,最终超时。 内部的其他应用程序正在调用API,因此我们知道它不是服务器端或网络问题。 我们尝试过几台机器 – 所有机器都有同样的问题。 有没有人曾经遇到过这个问题,或者有没有人对如何调试有任何不满(因为响应对象没有任何东西,或者至少没什么用处)。