java - httpClient能不能在一次post请求中进行多次数据交换?
PHP中文网
PHP中文网 2017-04-17 17:23:14
[Java讨论组]

如题,最近刚刚学习http。在一个应用中使用http协议与服务器进行数据传输。现在遇到的问题是,在登录中密码进行多次加密,这个过程需要和服务器不断地进行数据交互才能完成。有没有办法可以实现?就是在服务器返回第一次数据的时候继续等待客户端返回一串处理后的数据,如此不断地进行交互。如果可以的话,怎么实现?如果不行的话有没有别的方式可以实现?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
PHP中文网

从连接的角度,只能是一次请求,一次响应。第二次请求和第一次请求没有直接关联。不过,服务器和客户端可以通过某种机制来保持状态,从而关联多次请求。比如cookie+session。

对于你这个场景,比如可以这么设计:

  1. c-->s 客户端发起登录请求

  2. s-->c 服务器生成一个唯一session保存,并将对应的cookie和产生的随机数发送给客户端。session和cookie和随机数到对应关系应该由服务端保存

  3. c-->s 客户端收到随机数加密后得到密文,将密文跟cookie一起发给服务端

  4. s-->c 服务端根据cookie,查找到session和之前生成的随机数,并校验加密结果,从而验证客户端合法。

到这里,服务端就可以认为客户端登录成功,当然也可以继续验证,直到验证完成。不过,总的来说,每次交互都是从客户端首先发起,服务端才能响应,这是HTTP1.0的根本规范。HTTP 2.0就不一样了,这就另说了

怪我咯

这不符合HTTP协议的规范,HTTP讲究无状态,不提供连续的数据交换功能,你只能使用其他协议或者通过编写相应的程序连续发送独立的HTTP请求来完成这项工作。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号