`
shermenn
  • 浏览: 14196 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

automation upload file 攻破 zk 外壳

 
阅读更多

  做完整个任务,如同做了一个长长的噩梦。

  周二,kelvin 同我讲 automation upload program 需要我们project team handle。我就知道麻烦事来历。但是由于我对http协议比较了解,我猜想所有broswer 做得到的事情都是可以用java 重复实现的。只是公司还没有人坐过这样的任务,所以心里很悬,任务允许的时间很短。我必须在5日内完成。

  周二(Mar 5)算是正式开工做 automation upload program。从需求上了解这个program 必须具备几个功能

 1. 模拟浏览器发送请求到server

 2.必须能够简单分析 response text 从中获知 server 处理文件是否成功 有无 warning message。

 3. 处理的summay 和 logger,同 file handling

4. 能够兼容 http 协议同https 协议

  处于对第四点考了吧,不敢轻易开工。在google 上获知 apache common httpClient 包可以协助我们做到发送和获取浏览器请求的功能,并且能够在http 和https 协议下工作。

  有了强大的lib 支持 是以后工作能够顺利解决问题,完成任务的关键。

  拦路虎1 security 问题

  据我所知,在broswer 同server 沟通主要是按照浏览器的cookie 同server 的session 匹配。cookie 是验证登陆用户的唯一标示。那么只要在header 上假如 cookie ,就可以简单地解决登陆问题。按照这个思路,但是第一次测试不是很顺利,每次request,zk 返回的response error code 410.超时登陆问题。zk 的阻扰 困惑我很久,百思不得其解。

  周二遗留的问题:header里面set了cookier字段,为什么response 回来的text种种迹象标示timeout ,uploadaction 也是返回:

 if(evl(window)){

    exc(timeout());

}

 

  周三的太阳照常升起,假如cookie 问题不解决,那么所有工作将无法完成。在google同baidu帮助下,我尝试使用不同httpClient实现方式 升值使用了 httpclient register login scheme 但是返回结果都是同样的error

  为了验证我的cookie才行是正确的,我必须从头开始检查我的工作。重新核对了request param同action ur 已经 header 参数。在返回研究 broswer upload file 一系列的action中,确定不止一个action 同upload 有关联,我怀疑zk会识别我request的action来判别action 的可执行与否,我的猜想是正确的。我连同popup upload win action 写入代码段。研究有了进展,popup win action 成功返回text是同浏览器完全一样的text。 由此正式我cookie 猜想是正确无误的。用反例证明,如果我logout 当前cookie user 再次request popup win ction,返回的text 就是redirect到login 页面。 顿时心中一股安定。cookie 方案正确。

 

  拦路虎2 upload file to server

  周三正式了cookie 是正确的,但是疑云重重,为何只是一只action 有效,其他全部failed。 返回的text 与周二完全没有变化。工作的线索断了。我必须重头开始检查工作,是不是按照我的想法在实现。重新检查 request header, request param,request url。 发现有些参数是会变化的,这是 zk 在 client 段 有函数在搞鬼,每一次post 出去upload 的 uuid 应该是不同的。 从此有了 ZK-SID ,workingUUid,importRowDataId,popupBroserWindowId  这四个重要的参数,他们的变化是有规律的,按照server返回的text去做不同的调整。到了周三,kevlin 已经开始催我其他工作,但是不愿意放低手头的工作,以为一旦放低,意味着要很长时间才能继续,但是如果这项任务失败,我将输得一趟糊涂,不但没有做到 automation 而且 其他工作也被拖累,更重要是自己信心被打败。

  中午吃完饭,在4项参数变化的情况下,action 有一只开始变化,开始显示 error,在追踪server log 显示 zk 找不到 content id。 而这个content id 是由主action upload file 返回来的。这一切说明 我的问题卡在 主action upload file 上面。

  加班到晚10点归家路上非常烦恼,开始反思一天的工作,虽然我已经抓到所有同upload 有关的action 并且set好了param 肉眼看起来是set好了,但是action respose同周二是没有质的区别。我虽然抓到了多个action,但是还不能很清楚地区分他们之间的联系和各自的工作目的 这个也是有疑问的。 我最怀疑的是 server upload file 有问题,吃不进file ,但是 httpClient code 下面我使用多种方式去 post file 依然无果,我相信 httpClient 不会这么傻逼个功能都做不好吧。 开始怀疑 ZK 是否会根据其中的一系列action 接收顺序去处理upload action。或者这是和线程相关,3个action 必须在限定时间内到达zk server 否则 410 timeout,这个解释听起来似乎有点道理。匆匆回家,开始改造post action ,换成线程方式,结果令人伤心,response text 依旧不变。

  周四激情变淡,但是工作还是得继续,我安慰自己,假如中午做不成功,就和kelvin要求resource 或者请求其他高人帮手了。其实这是我最不愿意看到的结果。不停地调试代码,改变实现方式,goole 和百度,都是无果而终。在一次检查 server log时候打开了 tomcat server 自身log,一堆的exception , no boundary found。立即google, 非常兴奋,在header上加上了 boundary,upload file action response text 立即变化,同浏览器一样。激动得想哭。

  然而这个问题的解决不是解决最后的问题。 upload file action return text 是和浏览器一样,但是其他些action 依旧报错。看起来有问题的问题都解决了,但是结果还不是自己想要的,这是最毁灭性的打击。

  

  拦路虎3 空格

  周四有了重大进展,但是file依旧没有upload 成功,由于这个结构钢,我们可以否认前面所有的进展,所有问题的解决都是假象,这条路是行不通的,andy 也担心我行到最终发觉是死胡同,项目的压力越来越大。坚信自己的初衷,浏览器能做的,java一定能做到,做不到就是我的问题了。

  在工作没有进展,没有了线索,就得重复检查进展,以前的解决方案是不是正确。引入 sniff 软件进行 request 包数据的检查,firefox 的firebug 已经满足不了我的需求了。在sniff 帮助下 我改变 整个 httpcilent post action 的参数 header 同url 同浏览器都已经不可区分了,但是action response text 依旧是exception。我要奔溃了。

  周五 不得不做完项目紧急的其他事情,暂缓了 automation 的工作。

  周六连续地匹配 sniff  参数,coding 无果而终。不断地review使我很清晰zk 不同 param中 id 同 这一系列upload的作用了

  周日已经开始厌倦,但这是工作,签名已经很多进展,那种突破难点时候的心情依然激励我。下午2点时候,在review code 时候,发现我set boundary 后面带着个空格。难道我的问题都是这个空格引起的? 在删除空格测试,我激动得要喊出来了,file 成功地upload 到了 server temp folder。

  后面的几个小问题手到擒来,注意了字符串的空间后,成个upload framework 瞬间完成。

  3月11日玩是auto upload program 的初夜,希望你能连续工作8小时以上。度过一晚。

                                                                                                                                   写于3月11日 香港沙田

  

分享到:
评论

相关推荐

    A COM-based Automation Wave File Editor一个基于COM自动化的Wa

    标题中的"A COM-based Automation Wave File Editor"是一款利用COM(Component Object Model)自动化技术开发的Wave音频文件编辑工具。COM是微软提出的一种软件组件模型,它允许不同编程语言编写的对象相互通信,...

    Ansible Automation Platform 快速安装指南 v3.8.1

    Ansible Automation Platform 的安装过程包括下载 Ansible Automation Platform 安装程序、安装 Ansible Automation Platform、设置Inventory File、Playbook setup、更改密码等方面的知识点。 3. Ansible ...

    ETL Automation使用手册

    如何查看作业的记录文件 (Log File) 查看作业的记录文件需要按照以下步骤进行: 1. 查找记录文件 2. 打开记录文件 3. 查看记录文件内容 ETL Automation 前端管理程序使用说明 ETL Automation 前端管理程序是指 ...

    ETL Automation 使用手册 Version 2.6.0 中文

    如何查看作业的记录文件 (Log File) 查看作业的记录文件是 ETL Automation 的一个重要组件,用于存储作业的执行记录。该组件可以提供一个自动化的作业执行记录解决方案,满足不同的业务需求。 ETL Automation 前端...

    V5Automation.chm

    catia vb

    test upload file

    多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加

    CATIA V5 Automation 教程

    CATIA V5 Automation 教程 CATIA V5 Automation 是一款强大的三维计算机辅助设计(CAD)软件,旨在帮助用户自动化设计、仿真和分析过程。本教程旨在指导用户如何使用 CATIA V5 Automation 的功能,特别是在知识专家...

    UIAutomation源代码

    http://download.csdn.net/download/chenxu7601257/5163879 之前忘记把dll文件放上去,发现很多评论说需要DLL,今天整理了下把源代码发给大家...项目在Github上的地址: https://github.com/chenxu7601257/UIAutomation

    C#UIAutomation_inspect_UISpy.zip

    C# UIAutomation C# UIAutomation C# UIAutomation C# UIAutomation C# UIAutomation C# UIAutomation C# UIAutomation C# UIAutomation C# UIAutomation C# UIAutomation C# UIAutomation C# UIAutomation C# UI...

    金蝶Automation 错误解决方案

    "金蝶Automation 错误解决方案" 金蝶Automation 错误解决方案是指在金蝶系统中出现的Automation 错误和拒绝的权限故障的解决方法。下面将对该解决方案进行详细的解释和分析。 一、故障之“Automation 错误” ...

    OPC Automation2.0组件

    OPC Automation 2.0组件是面向工业自动化领域的一个关键技术,主要用于设备间的数据交换和通信。OPC(OLE for Process Control)标准是由OPC基金会制定的,旨在提供一种统一的方式来连接不同制造商的自动化设备和...

    Automation 360 v.23安装包

    Automation 360 v.23是一个自动化软件的安装包。该软件提供了一套完整的自动化工具,可以帮助用户自动化执行各种任务和流程。它包括了强大的脚本语言、图形化界面和丰富的功能库,使用户能够轻松地创建和管理自动化...

    Codesys:文件读写(CAA File库)

    CAA File库,全称为Common Automation Architecture File Access Library,是CODESYS提供的用于文件读写的标准库之一。与SysFile库不同的是,CAA File库提供了更为高级的接口,使得开发者能够更方便地进行文件处理...

    Automation Studio实验报告

    【Automation Studio实验报告】 实验报告主要探讨了贝加莱Automation Studio与Wincc的通信应用,涉及自动化控制领域的基本概念和操作。Automation Studio是贝加莱公司开发的一款强大的PCC(可编程计算机控制器)...

    Automation 错误解决方法

    我们的操作系统经常会运行程序时提示 Automation 错误,以上是针对 Automation 错误解决方法

    Automation Studio 4的使用入门.pdf

    Automation Studio则是贝加莱公司提供的一个集成开发环境,用于编程和仿真贝加莱PLC(可编程逻辑控制器)及自动化系统。 本份《Automation Studio 4的使用入门.pdf》文档旨在向贝加莱PLC新手提供一个从基础到高级...

    uiautomation模块源码

    Python-UIAutomation-for-Windows 是一个强大的Python库,主要用于Windows平台上的UI自动化测试和操作。这个模块基于.NET Framework中的UI Automation技术,允许开发者无须直接交互就能控制和测试图形用户界面(GUI...

    UIAutomation+spy++

    在IT行业中,UIAutomation和Spy++是两种强大的工具,用于自动化测试、调试和理解Windows应用程序的用户界面。本文将深入探讨这两个工具以及如何在Win10环境下利用它们获取桌面文件信息和模拟鼠标操作。 首先,UI...

Global site tag (gtag.js) - Google Analytics