我目前正在编写一些测试,以便通过 Windows 窗体提高我的 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”而不是第 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[] postDataBytes = encoding.GetBytes(postData);
request = (HttpWebRequest)WebRequest.Create(DefaultUrlSettings);
request.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Anonymous;
request.Container = new CookieContainer();
request.Timeout = 10000;
request.ContentType = contentType;
request.ContentLength = postDataBytes.LongLength;
request.Method = @"post";
var senderStream = new StreamWriter(request.GetRequestStream());
senderStream.Write(postDataBytes, 0, postDataBytes.Length);
senderStream.Close();
string htmlResponse = new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd();
return processedResult(htmlResponse); // Processing the HTML source code parsing, etc.
}
在我看来,我似乎陷入了瓶颈。我找不到达到预期结果的方法。
编辑:这个站点的 ContentType 似乎有参数。让我解释。
- 有一个带有“元”变量的变量,其中规定了以下内容:
meta http-equiv="Content-Type" content="application/xhtml+xml, text/xml, text/html; charset=utf-8"
- 另一个后来的代码被读作:
form id="fpcByAdvancedSearch:fpcSearch" name="fpcByAdvancedSearch:fpcSearch" method="post" action="/cpotools/apps/fpc/personal/findByCity?execution=e1s1" enctype="application/x-www-form-urlencoded "
我的问题如下:我必须坚持哪一个?
让我猜猜,第一个 ContentType 是否被认为是第二个仅用于在发布数据时对函数的另一个请求左右?
编辑:根据请求,这个问题下列出了更接近我的解决方案: WebRequest: How to find a postal code using a WebRequest against this ContentType=”application/xhtml+xml, text/xml, text/html; 字符集=utf-8”?
谢谢你的帮助!:-)