Tag: httpwebrequest

Async Callbacks在哪个线程上运行?

我正在进行几个HttpWebRequest.BeginGetResponse调用,并且在BeginGetResponse的回调方法中,我正在调用一个EventHandler。 在EventHandler中,有一些逻辑可以测试下载是否成功。 如果没有,它会尝试重新下载Html。 我注意到有很multithreading被生成,尤其是在出现错误时。 那么,Async Callbacks在哪个线程上运行? 无论如何我可以在原始线程上调用EventHandler吗? 如果那不可行,我可以在UI线程上调用它吗? 谢谢!

HttpWebRequest对象的诊断转储

有没有什么好的方法(除了繁琐地查询每个属性)在C#中为HttpWebRequest构建诊断转储字符串? 对于简单的对象,人们可以使用new JObject(theObject) ,但这对HttpWebRequest不起作用(当然, toString在HttpWebRequest上是无效的,因为它在任何C#对象上都是如此)。 对于C#对象的任何子集,是否有任何通用的方法(除了使用我已经提到的new JObject )? 更新:我发现使用JsonConvert.SerializeObject(Hans的链接中的一个建议)可以很好地转储HttpWebRequest(尽管它没有获取请求流)。 我有点使System.Net.Tracing的东西工作(虽然文档,像往常一样的.NET东西,很糟糕)。

重定向到POST HttpWebRequest

我正在尝试使用HttpWebRequest将数据发布到外部URL,然后我需要将用户重定向到外部URL,我只是在其中发布了我的数据,这可以在第一个地方实现吗?

具有HTTP请求的代理

是否可以通过将主机指定为代理来通过代理路由GET请求? 或者你必须设置数据包的目的地? 我正在尝试生成HTTPRequestMessage并通过代理路由它。 但是,我没有精确的级别控制来设置发送请求的目的地。

使用分页刮取ASP.NET网站

我试图刮一个基本的asp.net目录网站,其中有分页。 该网站有50多个页面,在任何一个页面上最多包含10个分页链接。 我正在使用fiddler来帮助复制使用浏览器发布的所有参数,变量,表单域,cookie等。 我在两个post之间看到的唯一区别是__EVENTVALIDATION值。 使用HttpWebRequest我总是拥有相同的价值,而通过浏览器每次点击都会有变化。 使用HttpWebRequest我正确地获得了10个第一页,但是以下所有页面都将我重定向到主页。 Bellow是回发javascript,对于前10个之后的链接总是相同的。 javascript:__doPostBack(‘CT_Main_2$gvDirectorySearch$ctl53$ctl00$ctl11’,”) 任何想法为什么__EVENTVALIDATION不会随着HttpWebRequest而改变?

HttpWebRequest:如何通过带有x-www-form-enclosed的WebRequest在Canada Post找到邮政编码?

我目前正在编写一些测试,以便通过Windows Forms进行Internet交互来提高我的技能。 其中一项测试是查找加拿大邮政网站应返回的邮政编码。 我的默认url设置为: http : //www.canadapost.ca/cpotools/apps/fpc/personal/findByCity?execution=e4s1 所需的表单字段是: streetNumber , streetName , city , province contentType是“application / x-www-form-enclosed” 编辑:请考虑值“application / x-www-form-encoded”而不是point 3值作为contentType。 (感谢EricLaw-MSFT!) 我得到的结果不是预期的结果。 我得到了页面的HTML源代码,我可以手动输入信息来查找邮政编码,但不能找到带有找到的邮政编码的HTML源代码。 我知道我做错了什么? 我应该考虑采用XML方式吗? 首先是匿名搜索加拿大邮政吗? 这是一个代码示例,以便更好地描述: public static string FindPostalCode(ICanadadianAddress address) { var postData = string.Concat(string.Format(“&streetNumber={0}”, address.StreetNumber) , string.Format(“&streetName={0}”, address.StreetName) , string.Format(“&city={0}”, address.City) , string.Format(“&province={0}”, address.Province)); var encoding = new ASCIIEncoding(); byte[] […]

远程服务器返回错误:(407)需要代理身份validation

我引用了几个网站,它们回答了这个问题“远程服务器返回错误:(407)需要代理validation。” ,但没有一个是有帮助的。 我写了一个示例代码来检查办公室中的代理身份validation。 代码抛出exception。 我的要求: – validation网站返回的内容。 在办公室以外,代码工作正常,但在办公室它会因代理而抛出exception。 当我使用新的NetworkCredential对凭据进行硬编码时,它可以正常工作。 int ResponseCode; string url = “http://www.msftncsi.com/ncsi.txt”; WebRequest request = WebRequest.Create(url); request.Credentials = CredentialCache.DefaultCredentials; using (WebResponse response = request.GetResponse()) { Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); responseFromServer = reader.ReadToEnd(); ResponseCode = (int)((HttpWebResponse)response).StatusCode; reader.Close(); } 我不想硬编码。 我在http://social.msdn.microsoft.com/Forums/is/csharpgeneral/thread/c06d3032-dceb-4a1a-bb6a-778fd13a938a中提到了解决方案,但即使这样也没有用。 我错过了什么?

C#中的GetResponse()

我的便携式类库中有以下代码。 但它给出了错误 System.Net.HttpWebRequest不包含GetResponse()的定义。 public async Task GetStateByUserId(string userID) { HttpWebRequest request; Stream receiveStream; StreamReader readStream; request =(HttpWebRequest)CreateGetWebRequest(“state/uid/”+userID); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { receiveStream = response.GetResponseStream (); readStream = new StreamReader(receiveStream); string str = readStream.ReadToEnd().ToString(); s = JsonConvert.DeserializeObject(str); return s; } } 谁知道为什么会这样?

使用HttpWebRequest时保持会话

在我的项目中,我使用的是C#app客户端和tomcat6 Web应用程序服务器。 我在C#客户端编写了这个代码片段: public bool isServerOnline() { Boolean ret = false; try { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(VPMacro.MacroUploader.SERVER_URL); req.Method = “HEAD”; req.KeepAlive = false; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); if (resp.StatusCode == HttpStatusCode.OK) { // HTTP = 200 – Internet connection available, server online ret = true; } resp.Close(); return ret; } catch (WebException we) { // […]

HttpWebRequest.GetResponse() – 哪些特定的状态代码会引发exception?

我一直在寻找一些关于此的明确文件,但没有找到任何运气。 基本上 – 问题是 – 从服务器返回的HTTP状态代码将HttpWebRequest.GetResponse()在执行类似的事情之后生成WebException吗? 具体来说 – 它会为状态200以外的任何其他内容生成WebException吗? 或者它只会生成一个WebException,例如400,404和500(为了参数)。 我想知道,因为我正在与之通信的服务器定义除了HTTP 200之外的其他任何东西作为错误条件返回 – 关键是,我可以依赖为200以外的任何其他东西生成WebException吗? (我现在编写了我的代码,以便它实际上每次检查返回状态代码以确保它是200 OK,如果不是,请采取适当的措施 – 但它之间有很多重复,以及WebException的catch块,我希望能把它清理干净……) 任何与文档相关的链接都将非常受欢迎。 谢谢!