Tag: httpwebrequest

TcpClient或HttpWebRequest到Apple TV 30秒后结束?

我正在使用C#创建一个库来使用Airplay协议将照片和video发送到Apple TV(特别是与第3代一起使用,但希望这对此无关紧要)。 https://airlib.codeplex.com/ 根据此规范,Airplay的所有命令都是端口70上的HTTP: http : //nto.github.com/AirPlay.html 我已成功地在Apple TV上播放照片和video,但无论我做什么,AppleTV都只播放30秒的video。 看起来我的C#客户端发出播放命令就是在30秒时断开连接,这导致AppleTV结束播放会话。 我认为这个的原因: 完全终止客户端应用程序会产生与等待30秒相同的行为(基本上强制连接关闭)。 手动关闭HttpWebRequest或TcpClient连接会产生相同的行为(在播放会话中途)。 无论我持有断点多长时间以阻止GetResponse()调用,video总是在WebRequest开始发送消息后30秒超时。 为video使用不同的源(IIS,外部Web服务器)不会更改行为。 即使video已经在AppleTV上缓存并且没有重新流,超时仍然会发生。 我非常确定客户端请求需要在video的“播放”过程中保持连接,据我所知,我已将其编码为此。 我真的在我的智慧结束。 我已经尝试了我能想到的所有内容,包括作为HttpWebRequest和原始TcpClient(它们都工作但都超时)执行请求,将接收/发送超时设置为疯狂数字,并循环读取Tcp流确保有“活动”。 好像AppleTV期待我发送“嘿,继续播放”的消息,但我还没有从网上的任何来源看到类似的东西。 我希望这只是一些愚蠢的东西,我不是基于我缺乏Http / Tcp知识。 这是我的代码: Uri url = “http://somevideo.com/video.mov”; float startPosition = 0; TcpClient tcpClient = new TcpClient(“192.168.1.20”,7000); tcpClient.ReceiveTimeout = 100000; tcpClient.SendTimeout = 100000; //get the client stream to read data from. NetworkStream clientStream = tcpClient.GetStream(); […]

HttpWebRequest chunked / async POST

嗨,我想将一些动态生成的内容上传到我的网络API。 在客户端我使用HttpWebRequest。 数据应该上传同步,我想写入流AFTER(!)我执行了HTTP请求。 (从服务器到客户端它确实工作正常,但从客户端到服务器我得到一些例外)。 客户端实现如下: HttpWebRequest httpWebRequest = HttpWebRequest.Create(myUrl) as HttpWebRequest; httpWebRequest.Method = “POST”; httpWebRequest.Headers[“Authorization”] = “Basic ” + … ; httpWebRequest.PreAuthenticate = true; httpWebRequest.SendChunked = true; //httpWebRequest.AllowWriteStreamBuffering = false; //does not help… httpWebRequest.ContentType = “application/octet-stream”; Stream st = httpWebRequest.GetRequestStream(); Task response = httpWebRequest.GetResponseAsync(); // NOW: Write after GetResponse() var b = Encoding.UTF8.GetBytes(“Test1”); st.Write(b, 0, […]

c#中的HttpWebRequest不适用于.net 4.5

我正在开发一个c#项目,它将xml发送到服务器并接收xml作为响应。 安装了.Net Framework 4.0,工作正常。 安装.Net Framework 4.5后会抛出此exception: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei System.DomainNameHelper.IdnEquivalent(String hostname) bei System.Uri.get_IdnHost() bei System.Net.HttpWebRequest.GetSafeHostAndPort(Uri sourceUri, Boolean addDefaultPort, Boolean forcePunycode) bei System.Net.HttpWebRequest.GenerateProxyRequestLine(Int32 headersSize) bei System.Net.HttpWebRequest.SerializeHeaders() bei System.Net.HttpWebRequest.EndSubmitRequest() bei System.Net.HttpWebRequest.CheckDeferredCallDone(ConnectStream stream) bei System.Net.HttpWebRequest.BeginGetResponse(AsyncCallback callback, Object state) bei Fahrzeugverwaltungsserver.OutsideWorld.MAN_Integrationsserver.RawCommunication.ISServer.doPostAndGet()` 我使用BeginGetResponse方法,所有参数都不为null。 有人知道什么是错的吗? 为什么它适用于4.0但不适用于4.5? 我忘记了要设置的东西吗? 编辑1 private void doPostAndGet() { try […]

调用URL – c#

我试图在C#中调用一个URL,我只是对调用感兴趣,而不关心响应。 当我有以下内容时,是否意味着我正在调用URL? HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

HttpWebRequest中的“无法连接到远程服务器失败”

我正在使用VSTS 2008 + C#+ .Net 3.5来开发控制台应用程序,并将请求发送到另一台服务器(Windows Server 2008上的IIS 7.0)。 我发现当请求线程数很大(例如2000个线程)时,客户端在调用response =(HttpWebResponse)request.GetResponse()时会收到错误“无法连接到远程服务器失败”。我的困惑是 – 我有将超时设置为一个较大的值,但我在一分钟内得到了这样的失败消息。 我认为即使连接确实比IIS可以服务的更大,客户端也不应该这么快就得到这样的失败消息,它应该在超时期后得到这样的消息。 任何意见? 有什么想法有什么不对? 是否有任何想法可以使IIS 7.0提供更多并发连接? 这是我的代码, class Program { private static int ClientCount = 2000; private static string TargetURL = “http://labtest/abc.wmv”; private static int Timeout = 3600; static void PerformanceWorker() { Stream dataStream = null; HttpWebRequest request = null; HttpWebResponse response = […]

并行http请求

我有一个应用程序,使用backgroundWorker向last.fm网站发出API请求。 最初我不知道我需要做多少请求。 响应包含总页数,因此我只会在第一次请求后得到它。 这是下面的代码。 private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { int page = 1; int totalpages = 1; while (page <= totalpages) { if (backgroundWorker.CancellationPending) { e.Cancel = true; return; } //Here is the request part string Response = RecentTracksRequest(username, from, page); if (Response.Contains("lfm status=\"ok")) { totalpages = Convert.ToInt32(Regex.Match(Response, @"totalPages=.(\d+)").Groups[1].Value); MatchCollection match = Regex.Matches(Response, […]

如何提取从HttpWebResponse收到的压缩文件?

我将url放到浏览器的地址栏中,然后将zip文件下载到HD。 压缩文件的大小为386字节,在其属性中写入。 当我使用UnZipFiles方法提取文件时 – 它的工作原理。 但是,我想下载programaticaly并将其提取到内存中。 我使用GetResultFromServer方法来获取压缩内容。 如标题所示,内容的大小与HD上保存的压缩文件的大小相同: content-disposition: attachment; filename=emaillog-xml.zip Content-Length: 386 Cache-Control: private Content-Type: application/zip Date: Mon, 10 Sep 2012 08:28:28 GMT Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET 我的问题是如何提取GetResultFromServer返回的内容? 我尝试了以下方法: var ms = new MemoryStream(Encoding.Unicode.GetBytes(res)) var s = new ZipInputStream(ms); 但是我Unable to read from this stream 。 更新 我试过var zipStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), […]

带有进度跟踪的C#HttpWebRequest表单post(用于上传可能存在的大文件)

我有一个winforms应用程序,我写的是将文件发布到Web应用程序(不是我的)。 就发布文件本身来说,我的工作做得很好,我的问题是我想提供一些指示,告诉我发送请求的程度 。 下面的代码是我尝试使用BeginGetResponse到这一步 – 这是我发现请求仍然阻止的地方。 关于我可以从哪里开始看的任何建议? public void Dummy() { Dictionary fields = new Dictionary(); fields.Add(“key”, “something”); HttpWebRequest hr = WebRequest.Create(“http://somesite.com/api/something.xml”) as HttpWebRequest; string bound = “—————————-” + DateTime.Now.Ticks.ToString(“x”); hr.ContentType = “multipart/form-data; boundary=” + bound; hr.Method = “POST”; hr.KeepAlive = true; hr.Credentials = CredentialCache.DefaultCredentials; byte[] boundBytes = Encoding.ASCII.GetBytes(“\r\n–” + bound + “\r\n”); string formDataTemplate […]

使用来自C#的POST通过https发布

在用这个问题浪费了两天之后(并试图让它发挥作用),我决定退后一步并提出一个更基本的问题,因为显然有一些我不知道或者我做错了。 要求很简单, 我需要在 C#上通过https发布HTTPpost(传递几个值) 。 该网站(如果给出适当的值)将返回一些简单的html和响应代码。 (我将在稍后展示)。 这真的很简单。 “webservice”有效。 我有一个PHP示例,可以正常工作并成功连接到它。 我也有一个Dephi“演示”应用程序(带有源代码)也可以使用。 最后,我有来自具有“服务”的公司的演示应用程序(二进制),当然也有效。 但我需要通过C#来做到这一点。 这听起来如此简单,它无法正常工作。 出于测试目的,我创建了一个简单的控制台应用程序和一个简单的连接方法。 我尝试了7种不同的方式来创建HTTP请求,或多或少相同的事情,不同的实现(使用WebClient,使用HttpWebRequest等)。 每个方法都有效, 除非 URI以“https”开头。 我得到一个webexception,说远程服务器返回404.我已经安装了Fiddler(由SO用户建议),并调查了一点流量。 404是因为我传递了错误,因为正如我后面提到的,’服务’有效。 我稍后会谈到提琴手的结果。 我必须POST数据的URL是: https : //servicios.mensario.com/enviomasivo/apip/ 这是POST数据:(值是假货) usuario = SomeUser是否&釜= SomePassword&nserie = 01234567890123456789&版本= 01010000&operacion = 220 服务器可能会返回两/三行响应(抱歉西class牙语,但该公司来自西class牙)。 以下是可能响应的示例: HTTP/1.1 200 OK Content-Type: text/plain 01010000 100 BIEN 998 这是另一个 HTTP/1.1 200 OK Content-Type: text/plain 01010000 20 […]

响应未解析的HttpWebRequest和Set-Cookie标头(WP7)

我试图获取标题“Set-Cookie”或访问cookie容器,但Set-Cookie标头不可用。 cookie位于响应头中,但它不在客户端请求对象中。 我正在使用注册ClientHttp堆栈 bool httpResult = WebRequest.RegisterPrefix(“http://”, WebRequestCreator.ClientHttp); 这是回复: HTTP/1.1 200 OK Content-Type: application/xml; charset=utf-8 Connection: keep-alive Status: 200 X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.0.pre4 ETag: “39030a9c5a45a24e485e4d2fb06c6389” Client-Version: 312, 105, 0, 0 X-Runtime: 44 Content-Length: 1232 Set-Cookie: _CWFServer_session=[This is the session data]; path=/; HttpOnly Cache-Control: private, max-age=0, must-revalidate Server: nginx/0.7.67 + Phusion Passenger 3.0.0.pre4 (mod_rails/mod_rack) … […]