前端(安卓)与服务器通信总结

来源:互联网 发布:意外的sql命令结尾 编辑:程序博客网 时间:2024/05/18 01:57

前面提到了安卓客户端和.net后端通信,但是讲解的并不是很详细,同时代码分析也不是很彻底,这些再后面一篇文章中都是会做分析的。

         一个持续了三天的问题,在今天总算是解决了。虽然说自己以前也是做过相关的开发,但是了解的并不是那么透彻!

总结:

        不管是什么前端,他和后端通信都是要通过不同的桥梁,来形成一个通路,比如说:数据库连接,HTTP链接等等。

而,最常见的就是浏览器访问WEB页面。

1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把http://www.mytest.com/变成ip,如果url里不包含端口号,则会使用该协议的默认端口号。
DNS的过程是这样的:首先我们知道我们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看做是一个树状结构,该请求将一直发送到根直到得到结果。现在已经拥有了目标ip和端口号,这样我们就可以打开socket连接了。
2.请求连接成功建立后,开始向web服务器发送请求,这个请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:  GET 路径/文件名 HTTP/1.0
文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。现在可以发送GET命令:
GET /mytest/index.html HTTP/1.0,
3.应答 web服务器收到这个请求,进行处理。从它的文档空间中搜索子目录mytest的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。
为了告知浏览器,,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。
常用的HTTP头信息有:
  ① HTTP 1.0 200 OK  这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码"200 OK"表示请求完成。
  ② MIME_Version:1.0 它指示MIME类型的版本。
  ③ content_type:类型 这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。
  ④ content_length:长度值 它指示HTTP体信息的长度(字节)。

4.关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。
见的就是浏览器访问WEB页面。

比如说,我们常见的浏览器打开百度搜索资料,就是使用的 get的方式和后端进行交互的。具体的对比如下:
1. get是从服务器上获取数据,post是向服务器传送数据。2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 建议:1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
通过上面的介绍,我们明白了少量的数据且不包含机密信息的,我们一般使用get。而加密数据,或者信息量大(文件上传、图片上传等)的时候我们就使用post。
我上一篇博文中有这么一段代码kjh.post(App.url + "hisAction/upload.do", params,new HttpCallBack() {@Overridepublic void onSuccess(String t) {super.onSuccess(t);ViewInject.toast("文件上传完成");Toast.makeText(CMainActivity.this, "上传签到记录成功!", 3).show();}@Overridepublic void onFailure(Throwable t, int errorNo,String strMsg) {super.onFailure(t, errorNo, strMsg);ViewInject.toast("文件上传失败" + strMsg);}});}}
相信大家也能明白,post中第一个参数是服务器的响应地址,第二个参数是我已经打包的参数,第三个参数是服务器发的回响数据解析。


所以,我们总结下与服务器交互的东西:
1、明白服务器的地址
2、明白服务器需要的东西
3、在我们的数据中加入服务器能识别的标志
4、设定连接方式

文章内容不足,有哪些大神愿意指正,请留言 谢谢。

0 0
原创粉丝点击