作者:mobiledu2502861137 | 来源:互联网 | 2023-05-18 02:48
程序用来采集EMS运单信息,采用Httpwebrequest来做的,验证码直接引用了ems官网的地址,然后手工输入。现在的问题是,我在输入验证码后,只能取回一条运单信息。再取第二条运单信息的时候
程序用来采集EMS运单信息,采用Httpwebrequest来做的,验证码直接引用了ems官网的地址,然后手工输入。现在的问题是,我在输入验证码后,只能取回一条运单信息。再取第二条运单信息的时候,就提示验证码错了。
核心代码。
//得到数据信息
requestUri = new Uri(strUri);
request = (HttpWebRequest)WebRequest.Create(requestUri);
request.Method = "POST";
request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-silverlight, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*";
request.Referer = strUri;
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
request.KeepAlive = true;
request.COOKIEContainer = COOKIE;
//写入实际内容
strContent = "checkCode=" + strCode + "&mailNum=" + strEMSNo;
request.ContentLength = strContent.Length;
requestStream = request.GetRequestStream();
byte[] bytes = System.Text.Encoding.GetEncoding("gb2312").GetBytes(strContent);
requestStream.Write(bytes, 0, bytes.Length); requestStream.Close();
response = (HttpWebResponse)request.GetResponse();
//COOKIE = response.COOKIEs;
string input = new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
ProcessString(input);
这个代码执行一次没问题,第二次就提示验证码出错。
checkCode 是输入的验证码,mailNum是运单号
这个是主程序界面
我的测试源程序放在服务器上了。
http://218.106.246.182:188/mes.rar
测试运单号:5044424605102, 5044424645902
论坛的朋友帮忙给点意见。
多谢。
11 个解决方案
取验证码和post要用同一COOKIE
request.COOKIEContainer = COOKIE;
这种情况,首先就怀疑COOKIE传的不对,你用fiddler2看看发送的数据