繁体   English   中英

您必须使用支持并启用JavaScript的浏览器-c#

[英]you must use a browser that supports and has JavaScript enabled - c#

我正在尝试使用HTTPWebrequest发布信息,这是我不断得到的回复:

您必须使用支持并启用JavaScript的浏览器

这是我的邮政编码:

HttpWebRequest myRequest = null;
myRequest = (HttpWebRequest)HttpWebRequest.Create(submitURL);
myRequest.Headers.Add("Accept-Language", "en-US");
myRequest.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
myRequest.Method = WebRequestMethods.Http.Post;
myRequest.Headers.Add("Accept-Language", "en-US");
myRequest.Accept = "*/*, text/xml";
myRequest.ContentType = "application/x-www-form-urlencoded" + "\n" + "\r";
myRequest.CookieContainer = cookieContainer;
myRequest.Headers.Add("UA-CPU", "x86");
myRequest.Headers.Add("Accept-Encoding", "gzip, deflate");

//cPostData section removed as submitting to SO

myRequest.ContentLength = cPostData.Length;

myRequest.ServicePoint.Expect100Continue = false;

StreamWriter streamWriter = new System.IO.StreamWriter(myRequest.GetRequestStream());
streamWriter.Write(cPostData);
streamWriter.Close();


HttpWebResponse httpWebResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader streamReader = new System.IO.StreamReader(httpWebResponse.GetResponseStream());
string stringResult = streamReader.ReadToEnd();
streamReader.Close();

我如何避免出现此错误?

很难说出确切的问题是什么,因为正在接收您请求的服务器认为它无效。

也许第一件事就是将HttpWebRequest上的UserAgent属性设置为某个有效浏览器的用户代理字符串,因为服务器可能正在使用该值来确定是否为该页面提供服务。

这与您的代码没有任何关系-Web服务器代码中的某些内容可以检测或依赖Javascript。 页面上的一段Javascript最有可能填写(或在发布之前进行修改)一些隐藏的表单字段。

解决方案完全取决于Web服务器期望该表单数据发生什么。

这是一个门外汉的答案,而不是httpWebRequest对象的100%技术上准确的描述,这意味着这种方式会花费很多时间来发布它。 该答案的第一部分是澄清最后一句话。

httpWebRequest对象基本上充当与网页交互的浏览器。 这是一个非常简单的浏览器,没有UI。 它的设计基本上是为了能够在网页上张贴和阅读。 因此,它不支持这些天通常在浏览器中发现的各种功能,例如JavaScript。

您尝试发布到的页面需要javascript,而httpWebRequest对象不支持javascript。 如果您无法控制WebRequst对象要发布到的页面,那么您将不得不找到另一个wat来发布到该页面。 如果您拥有或控制该页面,则需要修改页面以去除需要javascript的项(例如Ajax功能等)。

添加

我故意不添加任何有关指定用户代理的尝试,以诱使Web服务器认为httpWebRequest对象支持JavaScript。 因为该页面可能确实需要启用JavaScript才能正确显示该页面。 但是,我的许多假设都被证明是错误的,因此我同意@Andrew Hare的观点,并说值得尝试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM