Tag: http

如何向tcp服务器发出http请求?

我想创建一个侦听端口443的TCP服务器,以便它可以接收HTTP请求并回发。 现在我正在使用Apache和PHP以正常方式执行此操作,但是可以在没有Web服务器的情况下执行此操作吗? 例如,我在C#.NET中构建了一个传统的TCP / IP客户端/服务器应用程序。 是否可以使用此实现来处理HTTP请求而不是使用Web服务器?

HttpWebRequest使用分块数据很慢

我正在使用HttpWebRequest连接到我内部构建的HTTP服务器。 我的问题是它比通过PostMan( https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en )连接到服务器要慢很多,这可能正在使用Chrome中的内置function可以请求数据。 服务器是在MSDN( http://msdn.microsoft.com/en-us/library/dxkwh6zw.aspx )上使用此示例构建的,并使用64的缓冲区大小。请求是一个HTTP请求,其中包含一些数据。 当通过PostMan连接时,请求被分成一堆块,并且多次调用BeginRecieve(),每次接收64B并花费大约2毫秒。 除了最后一个,收到少于64B。 但是当使用HttpWebRequest与我的客户端连接时,第一个BeginRecieve()回调接收64B并且大约需要1毫秒,以下只接收47B并且需要大约200毫秒,最后第三个接收大约58B并且花费2毫秒。 第二个BeginRecieve有什么用? 我注意到,一旦我开始将数据写入HttpWebRequest输入流,就建立了连接,但是在我调用GetResponse()之前,数据接收才开始。 这是我的HttpWebRequest代码: var request = (HttpWebRequest)WebRequest.Create(url); request.Method = verb; request.Timeout = timeout; request.Proxy = null; request.KeepAlive = false; request.Headers.Add(“Content-Encoding”, “UTF-8”); System.Net.ServicePointManager.Expect100Continue = false; request.ServicePoint.Expect100Continue = false; if ((verb == “POST” || verb == “PUT”) && !String.IsNullOrEmpty(data)) { var dataBytes = Encoding.UTF8.GetBytes(data); try { var […]

在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”); }

单声道下的WebRequest不支持HTTP协议

我在我的一台Macbook上遇到了最棘手的问题。 我有一个C#应用程序在我的Macbook上运行单声道。 该应用程序通过HTTP与Web服务进行通信,它在我的旧Macbook上完美运行。 我买了一个新的macbook并正在测试我的应用程序,但出于一些奇怪的原因: HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(sURI); 使用提供的URI作为exception消息抛出NotSupportedException 。 我也尝试了以下内容: HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(“http://www.google.com”); 并得到了同样的例外。 我不确定为什么事情会变得疯狂,并且无法想到任何可能导致这种情况的事情,因为它似乎在其他Mac上完美运行。 编辑: 我正在使用的Mono版本是2.10.11 exception的堆栈跟踪是: Webrequest.Create Exception string : System.NotSupportedException: http://www.google.com/ at System.Net.WebRequest.GetCreator (System.String prefix) [0x00000] in :0 at System.Net.WebRequest.Create (System.Uri requestUri) [0x00000] in :0 at System.Net.WebRequest.Create (System.String requestUriString) [0x00000] in :0 at MyApp.XSPManager.GeneralSOAPFunction (System.String serverName, System.String settingsAsXml, SharedLib.zErrorCodes& errorCode, […]

从来自NSUrlRequest的httpcontext获取变量

对于Iphone和asp.net服务器之间的http连接“POST”,这个问题将是一个很好的教程:)我想要做的是将图像从iphone发送到Asp.net服务器; 这是我在objective-c中的uploadImagefunction: – (IBAction)uploadImage { /* turning the image into a NSData object getting the image back out of the UIImageView setting the quality to 90 */ NSData *imageData = UIImageJPEGRepresentation(image.image, 33); // setting up the URL to post to NSString *urlString = @”MyWebServiceUrl”; // setting up the request object now NSMutableURLRequest *request = [[[NSMutableURLRequest […]

C#Flurl – 将WebRequestHandler添加到FlurlClient

我正在与Flurl合作,以获得需要基于证书的身份validation的API。 我从这篇SOpost中看到,向WebRequestHandler添加证书并指示HttpClient使用此处理程序很容易。 但是,使用Flurl对我来说并不是那么清楚。 我尝试了以下三件事。 扩展DefaultHttpFactory 我首先怀疑我需要创建自己的X509HttpFactory : DefaultHttpFactory ,它将创建处理程序并将其分配给HttpClient 。 但是,在查看源代码时,我注意到CreateClient的构造函数已经需要一个处理程序。 这个处理程序来自哪里? 使用DefaultHttpFactory创建客户端 WebRequestHandler handler = new WebRequestHandler(); handler.ClientCertificates.Add(myX509Cert); var clientFactory = new DefaultHttpClientFactory(); FlurlClient fc = clientFactory.CreateClient(url, handler); 由于HttpClient无法转换为FlurlClient因此无法编译 使用ConfigureHttpClient var clientFactory = new DefaultHttpClientFactory(); FlurlClient fc = new Url(“foobar.com”).ConfigureHttpClient(client => client = clientFactory .CreateClient(url, handler)); 这似乎是最可行的选项,但我不确定,因为委托是一个没有返回类型的Action 。 问题 使用Flurl支持客户端证书身份validation的最佳/正确方法是什么?

C#:HttpListener错误服务内容

我已经实现了类似的东西,只有真正的区别是 string filename = context.Request.RawUrl.Replace(“/”, “\\”).Remove(0,1); string path = Uri.UnescapeDataString(Path.Combine(_baseFolder, filename)); 这样我就可以遍历子目录了。 这适用于网页和其他文本文件类型,但在尝试提供媒体内容时,我得到了例外 HttpListenerException:由于线程退出或应用程序请求,I / O操作已中止 其次是 InvalidOperationException:在写入所有字节之前无法关闭流。 在using语句中。 有关如何处理或停止这些例外的任何建议? 谢谢

在重定向时保持HTTP Basic Authentification存活

我们正在使用基本身份validation的Web服务。 这一切都很好,直到Web服务的所有者实现了平衡服务。 这只是将请求重定向到不同的Web服务实例。 问题是重定向后基本身份validation失败。 有“请求身份validation凭据未通过”exception。 附加信息: 我们必须手动创建请求。 var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(Settings.Default.HpsmServiceAddress)); req.Headers.Add(“Authorization”, “Basic aaaaaaaaaaa”); req.PreAuthenticate = true; req.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested; req.UserAgent = “Apache-HttpClient/4.1.1 (java 1.5)”; req.KeepAlive = false; ServicePointManager.Expect100Continue = false; req.ContentType = “text/xml; charset=utf-8”; req.Method = “POST”; req.Accept = “gzip,deflate”; req.Headers.Add(“SOAPAction”, actionName); byte[] buffer = Encoding.UTF8.GetBytes(envelop); Stream stm = req.GetRequestStream(); stm.Write(buffer, 0, buffer.Length); […]

在C#中重用与HttpWebRequest的连接

我需要使用.Net发出POST请求。 我可以通过GET进行身份validation,因此我尝试在同一连接上发出POST请求以保持身份validation。 问题是我得到401 Not Authenticatedexception,这意味着连接没有被重用。 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(“my-server”); request.Credentials = new NetworkCredential(“user”, “password”); request.GetResponse().Close(); // Works fine // Now the request I want to make… request = (HttpWebRequest)WebRequest.Create(“my-server”); request.Credentials = new NetworkCredential(“user”, “password”); request.Method = “post”; string postData = “param1=1&param2=2”; byte[] data = new ASCIIEncoding().GetBytes(postData); request.ContentLength = data.Length; request.ContentType = “application/x-www-form-urlencoded”; using (Stream stream […]

由于WebClient的uploadData不对数据进行编码,因此向其添加“Content-Type”,“multipart / form-data”标头会产生什么影响?

C#的uploadData方法不对正在发送的数据进行编码。 因此,如果我使用此方法发送文件(在将其转换为字节后),并且接收方正在寻找multiform/form-datapost,那么它显然不起作用。 将添加如下标题: WebClient c = new WebClient(); c.Headers.Add(“Content-Type”, “multipart/form-data”); 让它发送加密为多种forms的数据,或者数据是否仍然没有加密(因此服务器需要多种数据无法解析)? 请注意,我无法使用WebClient’s uploadFile ,因为我没有权限在客户端获取文件路径位置(我只有一个流,我可以转换为字节)