目前的whttp库调用get和post后无法通过readHeader()函数读取返回的header。因为一鹤认为一个请求完毕以后就不应该再去获取header了, 想要获取header必须在请求完毕之前完成。
但是就我个人而言,因为比较懒,不想自己多些几行代码去先send再read,一步步去完成一个http请求。有简单方法不用,那不是傻吗。所以只能手动改一下whttp库。
因为readHeader函数必须在请求完成之前调用才能获取到header,而一鹤写的库里面,只有请求的method=”head”时才调用这个函数, 其他如post、get方法都不会调用。控制这个逻辑的代码在whttp库的down函数里面,大概573行:
if( method == “HEAD” || noReceiveData ){ this.readHeader(); this.endRequest(); return true; }
只要把 this.readHeader(); 这行代码移动到这个判断语句外面, 就可以在post()之后再调用readHeader来获取返回的http头了。
其实whttp是可以自动保存cookie的,那为什么我非要把它读出来呢? 是为了在多线程中共用cookie,才必须把这个header读出来。
本人和一鹤沟通, 希望把这个库这样改一下, 被拒绝。我看了一下,http库也可以这样改。如果有人遇到类似问题,可以借鉴一下。