| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Android Http请求方法汇总,含泪狂刷Android基础面试118题 -> 正文阅读 |
|
[网络协议]Android Http请求方法汇总,含泪狂刷Android基础面试118题 |
2.使用Apache的HttpClient访问网络资源 (1)get请求 public String executeGet() { String result = null; BufferedReader reader = null; try { HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI( “http://10.0.2.2:8888/data/get/?token=alexzhou”)); HttpResponse response = client.execute(request); reader = new BufferedReader(new InputStreamReader(response .getEntity().getContent())); StringBuffer strBuffer = new StringBuffer(""); String line = null; while ((line = reader.readLine()) != null) { strBuffer.append(line); } result = strBuffer.toString(); } catch (Exception e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); reader = null; } catch (IOException e) { e.printStackTrace(); } } } return result; } (2)post请求 public String executePost() { String result = null; BufferedReader reader = null; try { HttpClient client = new DefaultHttpClient(); HttpPost request = new HttpPost(); request.setURI(new URI(“http://10.0.2.2:8888/data/post/”)); List postParameters = new ArrayList(); postParameters.add(new BasicNameValuePair(“token”, “alexzhou”)); UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity( postParameters); request.setEntity(formEntity); HttpResponse response = client.execute(request); reader = new BufferedReader(new InputStreamReader(response .getEntity().getContent())); StringBuffer strBuffer = new StringBuffer(""); String line = null; while ((line = reader.readLine()) != null) { strBuffer.append(line); } result = strBuffer.toString(); } catch (Exception e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); reader = null; } catch (IOException e) { e.printStackTrace(); } } } return result; } 3.服务端代码实现 上面是采用两种方式的get和post请求的代码,下面来实现服务端的代码编写,使用python+flask真的非常的简单,就一个文件,前提是你得搭建好python+flask的环境,代码如下: #coding=utf-8 import json from flask import Flask,request,render_template app = Flask(name) def send_ok_json(data=None): if not data: data = {} ok_json = {‘ok’:True,‘reason’:’’,‘data’:data} return json.dumps(ok_json) @app.route(’/data/get/’,methods=[‘GET’]) def data_get(): token = request.args.get(‘token’) ret = ‘%s**%s’ %(token,‘get’) return send_ok_json(ret) @app.route(’/data/post/’,methods=[‘POST’]) def data_post(): token = request.form.get(‘token’) ret = ‘%s**%s’ %(token,‘post’) return send_ok_json(ret) if name == “main”: app.run(host=“localhost”,port=8888,debug=True) 运行服务器,如图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PD7G3Itj-1636292522650)(http://codingnow.cn/wp-content/uploads/2012/10/62.png “6”)] 4. 编写单元测试代码 右击项目:new–》Source Folder取名tests,包名是:com.alexzhou.androidhttp.test(随便取,没有要求),结构如图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uT4MSdLX-1636292522668)(http://codingnow.cn/wp-content/uploads/2012/10/71.png “7”)] 在该包下创建测试类HttpTest,继承自AndroidTestCase。编写这四种方式的测试方法,代码如下: public class HttpTest extends AndroidTestCase { @Override protected void setUp() throws Exception { Log.e(“HttpTest”, “setUp”); } @Override protected void tearDown() throws Exception { Log.e(“HttpTest”, “tearDown”); } public void testExecuteGet() { Log.e(“HttpTest”, “testExecuteGet”); HttpClientTest client = HttpClientTest.getInstance(); String result = client.executeGet(); Log.e(“HttpTest”, result); } public void testExecutePost() { Log.e(“HttpTest”, “testExecutePost”); HttpClientTest client = HttpClientTest.getInstance(); String result = client.executePost(); Log.e(“HttpTest”, result); } public void testExecuteHttpGet() { Log.e(“HttpTest”, “testExecuteHttpGet”); HttpClientTest client = HttpCli
entTest.getInstance(); String result = client.executeHttpGet(); Log.e(“HttpTest”, result); } public void testExecuteHttpPost() { Log.e(“HttpTest”, “testExecuteHttpPost”); HttpClientTest client = HttpClientTest.getInstance(); String result = client.executeHttpPost(); Log.e(“HttpTest”, result); } } 附上HttpClientTest.java的其他代码: public class HttpClientTest { private static final Object mSyncObject = new Object(); private static HttpClientTest mInstance; private HttpClientTest() { } public static HttpClientTest getInstance() { synchronized (mSyncObject) { if (mInstance != null) { return mInstance; } mInstance = new HttpClientTest(); } return mInstance; } /**…上面的四个方法…*/ } 现在还需要修改Android项目的配置文件AndroidManifest.xml,添加网络访问权限和单元测试的配置,AndroidManifest.xml配置文件的全部代码如下: <manifest xmlns:android=“http://schemas.android.com/apk/res/android” package=“com.alexzhou.androidhttp” android:versionCode=“1” android:versionName=“1.0” > lientTest(); } return mInstance; } /**…上面的四个方法…*/ } 现在还需要修改Android项目的配置文件AndroidManifest.xml,添加网络访问权限和单元测试的配置,AndroidManifest.xml配置文件的全部代码如下: <manifest xmlns:android=“http://schemas.android.com/apk/res/android” package=“com.alexzhou.androidhttp” android:versionCode=“1” android:versionName=“1.0” > |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:53:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |