开局声明:这是基于nohttp1.0.4-include-source.jar版本写的教程

由于nohttp功能强悍,因此需要多种权限,仅仅一个联网的权限是不够的,如果只给了Internet的权限,去请求网络将还会报错:

onFailed: com.yolanda.nohttp.error.NetworkError: The network is not available, please check the network. The requested url is: http://www.sciencenet.cn/xml/iphoneinterface.aspx?type=news&nums=20

因此建议,直接把nohttp的权限全部加入:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

首先是初始化整个应用全局的

 package com.qg.lizhanqi.nohttpdemo;

 import android.app.Application;

 import com.yolanda.nohttp.NoHttp;

 /**
* Created by lizhanqi on 2016-7-28-0028.
*/
public class MyApplication extends Application {
@Override
public void onCreate() {
//对你没看错就是这么一行就这么简单,NOhttp就是这么简单
NoHttp.initialize(this);
super.onCreate();
}
}

Get请求方式

     public void noHttpGetString(String url) {
//第一步:创建Nohttp请求对列(如果是本类使用的比较频繁,在onCreate的时候初始化一次就行了,这里是为了怕忘记这个步骤)
requestQueues = NoHttp.newRequestQueue();
//第二步:创建请求对象(url是请求路径)
Request<String> stringRequest = NoHttp.createStringRequest(url,RequestMethod.GET);//这里 RequestMethod.GET可以不写(删除掉即可),默认的是Get方式请求
//第三步:加入到请求对列中,requestQueues.add()分别是请求列的请求标志,请求对象,监听回调
requestQueues.add(1, stringRequest, new SimpleResponseListener<String>() {
@Override
public void onSucceed(int i, Response<String> response) {
Toast.makeText(MainActivity.this, "noHttpGetString请求成功" + response, Toast.LENGTH_SHORT).show();
} @Override
public void onFailed(int i, String s, Object o, Exception e, int i1, long l) {
Toast.makeText(MainActivity.this, "noHttpGetString请求失败" + e, Toast.LENGTH_SHORT).show();
Log.e(TAG, "onFailed: " + e);
}
});
}

post方式请求

     public void noHttpPostString(String url) {
//第一步:创建Nohttp请求对列(如果是本类使用的比较频繁,在onCreate的时候初始化一次就行了,这里是为了怕忘记这个步骤)
requestQueues = NoHttp.newRequestQueue();
//第二步:创建请求对象(url是请求路径, RequestMethod.POST是请求方式)
Request<String> stringPostRequest = NoHttp.createStringRequest(url, RequestMethod.POST);
// 添加请求参数例如"http://www.sciencenet.cn/xml/iphoneinterface.aspx?type=news&nums=20"
stringPostRequest.add("type", "news");
stringPostRequest.add("nums", "20");
//第三步:加入到请求对列中,requestQueues.add()分别是请求列的请求标志,请求对象,监听回调
requestQueues.add(2, stringPostRequest, new SimpleResponseListener<String>() {
@Override//请求成功的回调
public void onSucceed(int i, Response<String> response) {
Log.i(TAG, "onSucceed: " + response);
Toast.makeText(MainActivity.this, "noHttpPostString请求成功" + response.get(), Toast.LENGTH_LONG).show();
} @Override//请求失败的回调
public void onFailed(int i, String s, Object o, Exception e, int i1, long l) {
Log.e(TAG, "onFailed: " + e);
}
});
}

//缓存文字的请求

     public void noHttpCacheString(String url) {
//第一步:创建Nohttp请求对列(如果是本类使用的比较频繁,在onCreate的时候初始化一次就行了,这里是为了怕忘记这个步骤)
requestQueues = NoHttp.newRequestQueue();
//第二步:创建请求对象(url是请求路径, RequestMethod.POST是请求方式)
Request<String> stringPostRequest = NoHttp.createStringRequest(url);
//第三步:设置请求缓存的五种模式:
//DEFAULT是http标准协议的缓存
//stringPostRequest.setCacheMode(CacheMode.DEFAULT);
//REQUEST_NETWORK_FAILED_READ_CACHE请求失败返回上次缓存的数据(建议使用这种)
stringPostRequest.setCacheMode(CacheMode.REQUEST_NETWORK_FAILED_READ_CACHE);
//NONE_CACHE_REQUEST_NETWORK在没有缓存再去请求网络
// stringPostRequest.setCacheMode(CacheMode.NONE_CACHE_REQUEST_NETWORK);
// ONLY_READ_CACHE仅仅请求缓存,如果没有缓存就会请求失败
//stringPostRequest.setCacheMode(CacheMode.ONLY_READ_CACHE);
//ONLY_REQUEST_NETWORK仅仅请求网络不支持302重定向
// stringPostRequest.setCacheMode(CacheMode.ONLY_REQUEST_NETWORK);
// 添加请求参数例如"http://www.sciencenet.cn/xml/iphoneinterface.aspx?type=news&nums=20"
//第三步:加入到请求对列中,requestQueues.add()分别是请求列的请求标志,请求对象,监听回调
requestQueues.add(3, stringPostRequest, new SimpleResponseListener<String>() {
@Override//请求成功的回调
public void onSucceed(int i, Response<String> response) {
Log.i(TAG, "onSucceed: " + response);
Toast.makeText(MainActivity.this, "noHttpCacheString请求成功" + response.get(), Toast.LENGTH_LONG).show();
} @Override//请求失败的回调
public void onFailed(int i, String s, Object o, Exception e, int i1, long l) {
Log.e(TAG, "noHttpCacheString..onFailed: " + e);
}
});
}

Nohttp网络请求数据,Post以及Get的简单实用以及设置缓存文字的的请求的更多相关文章

  1. Java服务器对外提供接口以及Android端向服务器请求数据

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5056780.html 讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么 ...

  2. Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据

    1 后台获取请求数据 1.1 提出问题 前台发送请求的方式有哪些 后台如何获取这些请求的参数 1.2 前台发送请求的方式 GET.POST.AJAX 点睛:如果不指定请求方式,浏览器默认使用GET请求 ...

  3. jquery 跨域请求数据问题

    昨天参加了一个前端的面试,被问到一个跨域请求数据问题,我们之前一直用的是apicloud的api进行请求的,跨域是被apicloud封装起来的,也就没有注意跨域请求数据的问题.当被问到用jquery跨 ...

  4. Springboot框架,实现请求数据解密,响应数据加密的功能。

    一.简要说明: 在做这个功能的时候,参考了很多文章,也试了用过滤器解决.但总体来说还是很麻烦,所以换了另一种解决方案.直接实现RequestBodyAdvice和ResponseBodyAdvice两 ...

  5. 微信小程序请求数据

    微信小程序请求数据,在页面展示,可以在onLoad生命周期中进行请求. 1.新建目录http,新建文件http.js 2.在js文件中暴露需要使用的变量 var baseUrl = 'http://1 ...

  6. Flask中请求数据的优雅传递

    当一个请求到来时,浏览器会携带很多信息发送发送服务端.在Django中,每一个处理函数都要传入一个request的参数,该参数携带所有请求的信息,也就是服务端程序封装的environ(不明白该参数可以 ...

  7. 【原】iOS学习39网络之数据请求

    1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...

  8. 基于AFNetWorking 3.0封装网络请求数据的类

    对于使用 AFNetworking 的朋友来说,很多朋友都是直接调用 AFNetworking的 API ,这样不太好,无法做到全工程统一配置. 最好的方式就是对网络层再封装一层,全工程不允许直接使用 ...

  9. iOS网络之数据请求GET和POST

    1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...

随机推荐

  1. SqlDbType与DbType这间的转换关系

    SqlDbType => DbType SqlDbType.BigInt DbType.Int64 SqlDbType.Binary DbType.Binary SqlDbType.Bit Db ...

  2. 用excel做一幅像素画

    开发背景 看到网上有人发教程,如何通过在excel里设置单元格颜色画一幅画,感觉手工做太复杂,就打算用程序实现一个. 开发运行环境 python 2.7 PIL xlsxwriter 用法 pytho ...

  3. git的安装已经连github

    https://help.github.com/articles/generating-ssh-keys 1.安装git [plain]  view plain copy   sudo apt-get ...

  4. php给一张图片加上水印效果

    <?php /** * 功能:给一张图片加上水印效果 * $i 要加水印效果的图片 * $t 水印文字 * $size 文字大小 * $pos 水印的位置 * $color 文字的颜色 * $f ...

  5. 了不起的分支和循环01 - 零基础入门学习Python007

    了不起的分支和循环01 让编程改变世界 Change the world by program 我们今天的主题是"了不起的分支和循环",为什么小甲鱼不说C语言,不说Python了不 ...

  6. 使用Discuz!自带参数防御CC攻击以及原理,修改Discuz X 开启防CC攻击后,不影响搜索引擎收录的方法

    这部份的工作,以前花的时间太少. 希望能产生一定的作用. http://www.nigesb.com/discuz-cc-attacker-defence.html http://bbs.zb7.co ...

  7. 有空可以对C#尝一下鲜,WCF看上去很诱人(跨进程、跨机器、跨子网,跨企业网乃至跨Internet的分布式服务)

    说道底不还是要借助NGNIX实现,PHP自身呢?C#的WCF可以脱离IIS就可以实现跨进程.跨机器.跨子网,跨企业网乃至跨Internet的分布式服务,宿主可以是IIS,WinForm,WPF, Wi ...

  8. redo、undo、binlog的区别

    在MySQL中,redo.undo.binlog经常见,但很容易混淆这三者.   redo undo binlog 作用 保持事务的持久性 帮助事务回滚及MVCC的功能 进行Point-In-Time ...

  9. 转:完善eclipse+pdt作php开发中的代码提示能力

    在eclipse开发中 ,可能由于各种原因导致项目文件(eclipse内置)丢失或错乱, 因而, 失去一些能力.. 以下是经过被痛苦折磨后查阅总结的一点东西 设置完下面内容, 支持以下特性 PHP: ...

  10. WIN8共享文件 详细设置

    原文地址:http://jingyan.baidu.com/article/75ab0bcbff4274d6864db2f5.html win8共享文件设置 详细教程 | 浏览:6987 | 更新:2 ...