【发布时间】:2011-09-01 13:22:35
【问题描述】:
我试图自己解决这个问题,但我找不到任何有用的解决方案。我想向网站发送请求并获得处理后的结果。我已经遇到了这个问题(请参阅How do I fill in a website form and retrieve the result in C#?),但我能够通过那里所述的网站解决它。现在我正在尝试使用以下代码访问另一个网站 (http://motif-x.med.harvard.edu/motif-x.html):
ServicePointManager.Expect100Continue = false;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://motif-x.med.harvard.edu/cgi-bin/multimotif-x.pl");
request.Credentials = CredentialCache.DefaultCredentials;
request.ProtocolVersion = HttpVersion.Version10; // Motif-X uses HTTP 1.0
request.KeepAlive = false;
request.Method = "POST";
string motives = "SGSLDSELSVSPKRNSISRTH";
string postData = "fgdata=" + motives + "&fgcentralres=S&width=21";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "multipart/form-data";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
这给了我以下例外:
远程服务器返回错误:(500) Internal Server Error.
有什么办法可以防止这种情况发生吗?
如果您想手动输入网站内容:
数据集的文本区域:SGSLDSELSVSPKRNSISRTH
中心字符(在基本选项中):S
您将被重定向到结果的网站 - 处理可能需要一段时间。这真的是异常的原因吗?
【问题讨论】:
-
Setting
System.Net.ServicePointManager.Expect100Continuedoesn't work for HTTP 1.0 requests:“即使此属性设置为 true,HTTP 1.0 请求也不使用 100-Continue 行为。”。 -
好吧,抱歉,这行来自我发现 HTTP 1.0 属性之前的内容。请忽略它。
-
我尝试了网络表单,结果不仅仅是重定向,而是弹出/新窗口。我不确定 HttpWebRequest 是否可以处理这个问题,或者这是否会导致服务器端出错。
标签: c# .net exception-handling httpwebrequest internal-server-error