Android Thinkandroid学习之 http请求
来源:互联网 发布:如何进入it行业 知乎 编辑:程序博客网 时间:2024/06/01 21:10
Android Thinkandroid学习之 http请求
1、http请求同步和异步的区别
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。
所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。
两者请求过程的主要区别在于:
同步是用主线程去访问;
异步是用子线程去访问,主线程继续工作 若是的同步的话会卡死ui界面,所以在Android4.1以后不允许使用同步请求了。
请求方式,分为GET与POST:
GET
最为常见的HTTP请求,普通上网浏览页面就是GET。
POST
向服务器提交数据用到。
2、源码
这样的http请求现在有好多简单、便捷的框架,被托管在Github上了。这些框架中都有封装好的http请求函数,用起来非常简单。小编这里用了ThinkAndroid这个开源框架,下面是一个简单的Demo,我们用不同的请求方式同时请求百度首页,将请求的结果显示在WebView中。
package com.example.leiqi.thinkandroid_demo;import android.os.Bundle;import android.util.Log;import android.view.View;import android.webkit.WebView;import android.widget.Button;import android.widget.Toast;import com.ta.TASyncHttpClient;import com.ta.annotation.TAInject;import com.ta.annotation.TAInjectView;import com.ta.util.http.AsyncHttpClient;import com.ta.util.http.AsyncHttpResponseHandler;import com.ta.util.http.RequestParams;public class MainActivity extends BaseActivity { @TAInjectView(id = R.id.button) Button TbGET; @TAInjectView(id = R.id.button2) Button ybGET; @TAInjectView(id = R.id.button3) Button ybPOST; @TAInjectView(id = R.id.button4) Button tbPOST; @TAInjectView(id = R.id.button5) Button Clear; @TAInjectView(id = R.id.webView) WebView show_return; @TAInject private TASyncHttpClient syncHttpClient1; @TAInject private AsyncHttpClient asyncHttpClient; private static final String Baidu = "http://www.baidu.com"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { Log.e("wefwe","rewre"); switch (v.getId()) { case R.id.button: sysGet(); break; case R.id.button2: asyn1GET(); break; case R.id.button3: asynPost(); break; case R.id.button4: synPost(); break; case R.id.button5: showWebView(""); break; } } }; TbGET.setOnClickListener(onClickListener); ybGET.setOnClickListener(onClickListener); tbPOST.setOnClickListener(onClickListener); ybPOST.setOnClickListener(onClickListener); Clear.setOnClickListener(onClickListener);} /** * GET同步请求 */ private void sysGet() { String content = syncHttpClient1.get(Baidu); showWebView(content); } /** * GET异步请求 */ private void asyn1GET() { asyncHttpClient.get(Baidu, new AsyncHttpResponseHandler() { @Override public void onSuccess(String content) { super.onSuccess(content); showWebView(content); } }); } /** * Post同步请求 */ private void synPost() { RequestParams params = new RequestParams(); params.put("user_name","Terry"); params.put("password", "13071214"); Toast.makeText(MainActivity.this,"本测试参数并未真正的传送,大家根据需要写参数",Toast.LENGTH_SHORT).show(); String content = syncHttpClient1.post("http://www.baidu.com"); showWebView(content); } /** * Post异步请求 */ private void asynPost() { RequestParams params = new RequestParams(); params.put("user_name", "Terry"); params.put("password", "13071214"); Toast.makeText(MainActivity.this,"本测试参数并未真正的传送,大家根据需要写参数",Toast.LENGTH_SHORT).show(); asyncHttpClient.post(Baidu, new AsyncHttpResponseHandler() { @Override public void onSuccess(String content) { super.onSuccess(content); showWebView(content); } }); } /** * 在webview 中展示请求结果 */ private void showWebView(String content) { show_return.getSettings().setDefaultTextEncodingName("utf-8"); show_return.loadDataWithBaseURL(null, content, "text/html", "utf-8", null); }}
源码下载点击打开链接
0 0
- Android Thinkandroid学习之 http请求
- Android学习-Http请求
- android 开源框架ThinkAndroid学习
- android基础学习之http协议网络请求基本实例
- 【Android】安卓学习笔记之发起HTTP 请求
- HTTP 学习之请求方法
- Android开发之http请求
- Android之Http请求基础
- android开发之http请求
- Http请求之android-async-http 异步框架请求
- ThinkAndroid学习(一)
- thinkandroid的学习
- Android开发框架---ThinkAndroid
- 学习笔记-Jmeter之HTTP请求默认值
- Android 网络通讯之HTTP请求通信
- Android网络通讯之HTTP请求通信(一)
- Android网络通讯之HTTP请求通信(二)
- Android网络通讯之HTTP请求通信(三)
- Cgroup框架分析
- 复选框(checkbox)和单选框(radio)与文字居中对齐
- 如何面对客户的紧急需求
- 学习windows驱动(框架和IO请求)
- Cordys HTML5 多语言代码 解读
- Android Thinkandroid学习之 http请求
- 深入JVM系列(二)之GC机制、收集器与GC调优
- quick-cocos2dx之特效按钮——缩放按钮
- 【objective-c】面试题和基本概念
- hbase多master
- 位图的应用
- MTK 平台 CAMERA 驱动浅析
- 关于扩大按钮响应区域的方法
- Inner join,outer join,left join,right join的区别