Tag: http

将数据发布到asp.net Web API

我正在试图弄清楚新的ASP.NET Web API。 到目前为止,我已经能够创建此方法签名并连接到它很好并获得有效的响应… [HttpPost] public HttpResponseMessage CreateAccount() 我能够使用fiddler向此方法发送请求,并已validation它正在接收请求。 但是,当我尝试传递数据时,我遇到了问题。 我尝试的第一件事就是…… [HttpPost] public HttpResponseMessage CreateAccount([FromBody]string email, [FromBody]string password) 我输入 电子邮件:XYZ,密码:ABC 进入提琴手请求的主体。 当我这样做时,我得到一个500错误说明 ‘无法将多个参数(’email’和’password’)绑定到请求的内容。 我也试过这个方法签名… [HttpPost] public HttpResponseMessage CreateAccount([FromBody]UserAccountRequestData data) UserAccountRequestData是一个简单的POCO public class UserAccountRequestData { public string Email { get; set; } public string Password { get; set; } } 我说 {电子邮件:XYZ,密码:ABC} 要么 数据:{电子邮件:XYZ,密码:ABC} 进入请求的正文。 在尝试填充POCO的两种情况下,我都能够在调试时访问该方法,但数据对象始终为null。 […]

是否有.NET就绪方法来处理HttpListener HttpListenerRequest主体的响应主体?

我正在使用HttpListener为在localhost上使用其他技术编写的应用程序提供Web服务器。 该应用程序使用简单的表单提交(application / x-www-form-urlencoded)向我的软件发出请求。 我想知道是否已经编写了一个解析器来将html请求文档的主体转换为哈希表或等效文件。 考虑到.NET已经提供了多少,我觉得很难相信自己需要自己写这个。 提前致谢,

在C#中的RESTfull / HTTP请求中添加标头和发布数据

我在使用C#发送POST请求时遇到问题,似乎我误解了一些HTTP基础知识。 所以基本上我正在实现RESTfull服务客户端 ,其工作方式如下: 使用用户名/密码发出POST请求并获取令牌 在进行其他GET / POST / PUT请求时,在标题(授权:TOKEN)中使用此标记 我使用WebRequest来发出GET请求(使用Authorization标头)并且它正在运行。 但是,当我使用以下代码发出PUT请求时,服务正在提供“身份validation失败 – 未登录”消息: String url = String.Format(“{0}/{1}”, AN_SERVER, app); WebRequest theRequest = WebRequest.Create(url); theRequest.Method = “POST”; theRequest.ContentType = “text/x-json”; theRequest.ContentLength = json.Length; Stream requestStream = theRequest.GetRequestStream(); requestStream.Write(Encoding.ASCII.GetBytes(json), 0, json.Length); requestStream.Close(); theRequest.Headers.Add(“Authorization”, authToken); HttpWebResponse response = (HttpWebResponse)theRequest.GetResponse(); 发送POST请求时,我一定是犯了一个小错误(至少我希望如此)。 那么我做错了什么? 谢谢。

Canonical HTTP POST代码?

我见过很多发送httppost的实现,不可否认,我并不完全了解底层细节,知道需要什么。 在C#.NET 3.5中发送HTTP POST的简洁/正确/规范代码是什么? 我想要一个通用的方法 public string SendPost(string url, string data) 可以添加到库中并始终用于发布数据,并将返回服务器响应。

Request.Form和Request.QueryString之间的区别?

有人能告诉我Request.Form和Request.QueryString之间的确切区别吗? 我知道一个区别,比如 如果HTTP请求方法是POST,则用户提交的数据位于Request.Form()集合中 如果HTTP请求方法是GET,则用户提交的数据位于Request.QueryString()集合中 还有其他区别吗? 任何一个例子将不胜感激。

如何使用C#检索网页?

如何检索网页并使用C#将html显示到控制台?

建议在上传时检查文件大小的方法

我正在开发一个支持文件上传的Web应用程序。 我已经熟悉检查服务器端的大小,但我想检查客户端的文件大小。 我知道它的浏览器限制,出于安全原因我们无法访问文件属性。 所以我尝试了swfupload和uploadify组件。 两者都很好,满足需求。 但限制是取决于闪存,所以如果我的最终用户没有安装闪存,那么我最终会遇到问题。 要求他们安装闪存是另一回事,但它的门户网站和用户群非常庞大。 所以我不喜欢让他们安装flash的想法。 今天我遇到了gmail中的文件上传function。 并且在没有安装闪存的情况下在浏览器(IE)中进行了测试 我发现的很有趣。 如果您上传了一个大文件,他们会进行回发并立即返回文件大小过大的消息。 如何实现,如何在不下载整个内容的情况下找到文件的大小。 我相信这必须通过阅读HTTP标头信息来完成。 我对吗? 所以这就是我想要实现的确切function。 如果已经安装了闪存,我可以使用uploadify来检查大小,否则可能会实现谷歌使用的从未听过的技术。 谁能推荐我怎么做? 以前任何人都遇到过类似的问题,你做了什么? 更新: 使用FF安装的Flash上​​传Gmail IE中没有flash

从打开的HTTP流中读取数据

我正在尝试使用.NET WebRequest / WebResponse类来访问Twitter流API,这里是”http://stream.twitter.com/spritzer.json” 。 我需要能够打开连接并从打开的连接中逐步读取数据。 目前,当我调用WebRequest.GetResponse方法时,它会阻塞,直到整个响应被下载。 我知道有一个BeginGetResponse方法,但这只会在后台线程上做同样的事情。 我需要在下载仍然发生时访问响应流。 对于这些类,这对我来说似乎不太可能。 Twitter文档中有关于此的具体评论: “请注意,某些HTTP客户端库仅在服务器关闭连接后才返回响应主体。这些客户端不能用于访问Streaming API。您必须使用将以递增方式返回响应数据的HTTP客户端。最强大的HTTP客户端库将提供此function。例如,Apache HttpClient将处理此用例。“ 他们指向Appache HttpClient,但这没有多大帮助,因为我需要使用.NET。 是否可以使用WebRequest/WebResponse任何想法,或者我是否必须使用较低级别的网络类? 也许还有其他库可以让我这样做? 艾伦

使用RestSharp时如何以惯用方式处理HTTP错误代码?

我正在使用RestSharp构建HTTP API客户端,我注意到当服务器返回HTTP错误代码(401 Unauthorized,404 Not Found,500 Internal Server Error等)时, RestClient.Execute()不会抛出exception – 而是获得一个带有null .Data属性的有效RestResponse 。 我不想在我的API客户端中手动检查每个可能的HTTP错误代码 – RestSharp是否提供了将这些错误传递给我的客户端应用程序的更好方法? 更进一步的细节。 RestSharp公开Response.ErrorException属性 – 如果RestClient.Execute()调用导致任何exception,它将通过ErrorException属性公开而不是被抛出。 他们的文档包括以下示例: // TwilioApi.cs public class TwilioApi { const string BaseUrl = “https://api.twilio.com/2008-08-01”; public T Execute(RestRequest request) where T : new() { var client = new RestClient(); client.BaseUrl = BaseUrl; client.Authenticator = new HttpBasicAuthenticator(_accountSid, _secretKey); request.AddParameter(“AccountSid”, […]

登录使用Live.com身份validation的站点

我一直在尝试自动登录我经常访问的网站www.bungie.net。 该站点与Microsoft和Xbox Live相关联,因此在人们登录其站点时使用Windows Live ID API。 我对创建网络蜘蛛/机器人比较陌生,我担心我误解了一些最基本的概念。 我已经模拟登录到其他网站,如Facebook和Gmail,但live.com给了我一些麻烦。 无论如何,我一直在使用Wireshark和Firefox插件篡改数据来试图弄清楚我需要发布什么,以及我需要包含哪些我的请求。 据我所知,这些是登录此站点必须遵循的步骤。 1.访问https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=1268167141&rver=5.5.4177.0&wp=LBI&wreply=http:%2F%2Fwww.bungie.net%2FDefault.aspx&id=42917 2.收到MSPRequ和MSPOK的cookies。 3.将表单ID“PPSX”中的值,表单ID“PPFT”中的值,您的用户名,密码全部发布到更改的URL,类似于:https://login.live.com/ppsecure/post。 srf?wa = wsignin1.0&rpsnv = 11&ct =(在该URL的末尾有一些数字会发生变化) 4. Live.com向用户返回一个包含更多隐藏表单的页面。 然后,客户端将“ANON”forms的值,“ANONExp”forms的值和“t”forms的值发布到URL:http://www.bung ie.net/Default.aspx?wa = wsignin1.0 5.在发布该数据之后,向用户返回各种cookie,其中最重要的是“BNGAuth”,即该站点的登录cookie。 我遇到麻烦的地方是第五步,但这并不意味着我已经正确完成了所有其他步骤。 我发布了来自“ANON”,“ANONExp”和“t”的数据,但是我没有返回一个名为“RSPMaybe”的cookie,而是重新定向到主页。 当我查看Wireshark日志时,我注意到当我使用Firefox登录时以及我的程序运行时,日志与我之间的不同之处。 它可能没什么 但我会在这里附上图片供你查看 。 在第四步发布数据之前,我正从网站返回一个HTTP数据包。 我不确定这是怎么回事,但它必须是我在HTTPS步骤中做错的一个副作用。 using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Text; using System.Net; using System.IO; using System.IO.Compression; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Web; namespace […]