热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EMS快递批量信息采集(目前只能取一条数据)。

程序用来采集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 个解决方案

#1


没动静?自己顶。

#2


快来个高手吧,阿门。

#3


每取之前,需要重新得验证码

#4


引用 3 楼 feiyun0112 的回复:
每取之前,需要重新得验证码


 我们之前程序也是有动态取验证码这步,但这个方法不好用了。。我们通过这个方式取回的验证码数字也没有问题(我把动态取验证码返回的图片存到了本地,数字分析出来一样的)但post提交就提示验证码出错了。。

#5


引用
只能取回一条运单信息。再取第二条运单信息的时候,就提示验证码错了

本来就是如此,你想输入一次验证码,然后取很多条运单信息,那官方还要验证码干嘛呢。
看他的验证码到不复杂,你可以考虑自动识别,干脆不用输验证码了。

#6


取验证码和post要用同一COOKIE
request.COOKIEContainer = COOKIE;

#7


引用 5 楼 banian_cn 的回复:
引用
只能取回一条运单信息。再取第二条运单信息的时候,就提示验证码错了

本来就是如此,你想输入一次验证码,然后取很多条运单信息,那官方还要验证码干嘛呢。
看他的验证码到不复杂,你可以考虑自动识别,干脆不用输验证码了。



他的验证码确实不复杂,我们之前程序也是有动态取验证码这步,但这个方法不好用了。。我们通过这个方式取回的验证码数字也没有问题(我把动态取验证码返回的图片存到了本地,数字分析出来一样的)但post提交就提示验证码出错了。。
我们动态取验证码后,对应的COOKIE 内容 JSESSIONID也能取到返回给取数的,httpwebrequest.但post提交就提示验证码出错了.不知道怎么下手了。

#8


引用 6 楼 feiyun0112 的回复:
取验证码和post要用同一COOKIE
request.COOKIEContainer = COOKIE;



我们动态取验证码后,对应的COOKIE 内容 JSESSIONID也能取到返回给取数的。httpwebrequest这步。操作达到了,取验证码和post要用同一COOKIE的效果吧。?

#9


这种情况,首先就怀疑COOKIE传的不对,你用fiddler2看看发送的数据

#10


引用 9 楼 feiyun0112 的回复:
这种情况,首先就怀疑COOKIE传的不对,你用fiddler2看看发送的数据


我用firebug看的时候,发现JSESSIONID 属性是,httpOnly。但JSESSIONID 值可以取到。不会这影响了吧。

#11




搞不定了,一头雾水中。

推荐阅读
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 本文将深入探讨 iOS 中的 Grand Central Dispatch (GCD),并介绍如何利用 GCD 进行高效多线程编程。如果你对线程的基本概念还不熟悉,建议先阅读相关基础资料。 ... [详细]
  • 深入解析Django CBV模型的源码运行机制
    本文详细探讨了Django CBV(Class-Based Views)模型的源码运行流程,通过具体的示例代码和详细的解释,帮助读者更好地理解和应用这一强大的功能。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • Flowable 流程图路径与节点展示:已执行节点高亮红色标记,增强可视化效果
    在Flowable流程图中,通常仅显示当前节点,而路径则需自行获取。特别是在多次驳回的情况下,节点可能会出现混乱。本文重点探讨了如何准确地展示流程图效果,包括已结束的流程和正在执行的流程。具体实现方法包括生成带有高亮红色标记的图片,以增强可视化效果,确保用户能够清晰地了解每个节点的状态。 ... [详细]
author-avatar
mobiledu2502861137
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有