2 yannanying yannanying 于 2014.12.05 23:19 提问

httpclient提交一个请求返回的都是200的状态码,如何判断怎么是成功的怎么是失败的

httpclient提交一个用于登录的请求,但是返回的都是200的状态码,如何判断怎么是成功的怎么是失败的呢?

7个回答

yannanying
yannanying   2015.03.11 21:45
已采纳

已解决,原因是由于学校的教务网出现问题了,才导致模拟不成功

yannanying
yannanying 回复lisususu: 这个要看具体登录的网站是什么设计的去了
2 年多之前 回复
mydanling
mydanling 楼主我现在也遇到这个问题,请问一下,登陆成功是返回的302吗,一直都是200怎么办
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2014.12.05 23:43

返回200说明在http层面都是成功的。你说的失败应该是指返回的数据中包含错误信息,那么你需要对返回的数据进行判断。

baidu_33387853
baidu_33387853 大神你的名字是不是,艹赵海燕
接近 2 年之前 回复
yannanying
yannanying 回复caozhy: 我模范的是校内的登录,它打印出来的状态码就是200呢
接近 3 年之前 回复
caozhy
caozhy 如果是服务器跳转,应该返回301/302,而不是200。
接近 3 年之前 回复
yannanying
yannanying 如何操作返回的数据,就是我分别输入正确和失败的用户名和密码,但是使用post提交是成功了,都返回了200的验证码,但用户名和密码正确的会跳转到另一个页面,是错误的话就会回到原来的页面,这个怎么判断呢
接近 3 年之前 回复
HuiMengNiTian
HuiMengNiTian   2014.12.05 23:44

如果返回的是200的话,那就是成功的!否则就是失败的!

eagleyan
eagleyan 回复yannanying: lol
接近 3 年之前 回复
yannanying
yannanying 兄弟,这个你还是好好搞了这块才能下决定,,,
接近 3 年之前 回复
eagleyan
eagleyan   Rxr 2014.12.06 00:01

从这里看你应该使用的是post方式(你需要传递用户/密码)。你可以用PostAsync获取response,然后分析response啊。caozhy说的是对的,200只表明http协议层,你访问到一个资源,但是应用层你的程序是否通过校验,是由你的程序逻辑决定的。这就需要server端返回信息至client端

yannanying
yannanying 回复eagleyan: 我用的是httpclient4.x,然后用 HttpEntity entity = response.getEntity(); System.out.println(EntityUtils.toString(entity));打印了返回信息的内容,但是内容里面显示“页面发生错误,未将对象引用设置到对象的实例。”,请问这是什么原因呢
接近 3 年之前 回复
eagleyan
eagleyan 回复yannanying: ok,首先我们来看一下,你是用什么技术,我前面假设你是在.NET上开发,所以回复 PostAsync(貌似你不是使用.net的httpclient)。如果你使用的是apache的httpclient类,那是java。其次,你分析了200,没错,那是你的web server并不使用http code进行页面跳转(当然一般应用程序是不使用http code 302/301跳转的)。最后假设你在用apache的httpclient类,拿到200后,你应该使用method.getResponseBodyAsString()读到reponse进行分析
接近 3 年之前 回复
yannanying
yannanying PostAsync获取response?我是获取了response,然后打印出状态码,以及头信息,但是都是一样的,所以就不知道怎么分析了,也看过分析响应体的,但不知道怎么弄呢
接近 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2014.12.06 00:35

IE F12

明显是有302跳转的。

yannanying
yannanying 额,我这里登录的这个网站是没有跳转呢,,,,
接近 3 年之前 回复
xuzuning
xuzuning   Ds   Rxr 2014.12.06 08:59

返回状态码 200 表示通讯正常完成了
判断登录是否成功,要依据返回的内容

yannanying
yannanying 回复xuzuning: 我的写法和这篇文章的写法有些类似,没有使用那么多的参数,然后我试着按照他的写法,然后就抛出异常了呢,下面是异常信息:java.io.IOException: Attempted read from closed stream.后面省略很多了
接近 3 年之前 回复
xuzuning
xuzuning 回复yannanying: 不知道你是怎么写的。可参考一下这篇文章 http://blog.sina.com.cn/s/blog_5da93c8f0100t7wo.html
接近 3 年之前 回复
yannanying
yannanying 怎么获取返回的内容以及判断呢
接近 3 年之前 回复
qiujuer
qiujuer   2014.12.07 15:12

其实具体需要看服务器返回的参数。
你可以解析服务器返回参数 一般来说登陆成功会返回taken等信息

yannanying
yannanying 恩恩,我已经在弄这方面的
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片