开局声明:这是基于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. iOS开发-清理缓存功能的实现

    移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类 ...

  2. BZOJ4195 NOI2015 程序自动分析

    4195: [Noi2015]程序自动分析 Time Limit: 10 Sec Memory Limit: 512 MB Description 在实现程序自动分析的过程中,常常需要判定一些约束条件 ...

  3. 自定义View—绘制基本图形

    一.Canvas能够绘制哪些图形 二.

  4. sqlserver exists和in 与exists和not in

    1.exists 和 in 1.1 正常情况下exists和in的效果是一样的,如图试验 即使子查询中包含null也没有关系,依然可以正常使用 1.2 in 和 exists效率比较 先看in 由图中 ...

  5. UIAppearance使用详解-备

    iOS5及其以后提供了一个比较强大的工具UIAppearance,我们通过UIAppearance设置一些UI的全局效果,这样就可以很方便的实现UI的自定义效果又能最简单的实现统一界面风格,它提供如下 ...

  6. Android中focusable属性的妙用——底层按钮的实现

    http://www.cnblogs.com/kofi1122/archive/2011/03/22/1991828.html http://www.juziku.com/weizhishi/3077 ...

  7. cf C. Xenia and Weights

    http://codeforces.com/contest/339/problem/C #include <cstdio> #include <cstring> #includ ...

  8. HDU 4010 Query on The Trees(动态树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4010 题意:一棵树,四种操作: (1)若x和y不在一棵树上,将x和y连边: (2)若x和y在一棵树上, ...

  9. 采购术语PR、PO、RFQ、RFI、SOW、BOM、JIT、VMI、MRO 是什么意思

    PO:Purchase Order Form 采购订单,公司对外使用,还有个PR: ,公司内部使用的采购申请单 PR (Purchase Requirent) 请购单,采购申请单,代表企业内部的申请需 ...

  10. 能让汇编转到C51的初学者有更清晰的认识的一篇文章

    8051 是傳統 CISC 架構微控制器的代表,而 PIC 則是現代 RISC 架構微控制器的佳作. 雖然說 RISC 架構是公認未來微控制器的主流,但是 8051 藉著累積多年的發展環境與資源,特別 ...