导入okhttp依赖
compile 'com.squareup.okhttp3:okhttp:3.9.0'
MainActivity里面
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//get();
// post();
//postString();
//form();
// multipartBody();....
cache();//缓存
//perCall();
}
public void get(){
new Thread(new Runnable() {
@Override
public void run() {
try {
OkHttpClient client = new OkHttpClient.Builder()
// .addInterceptor(new LoggingInterceptor())
.addNetworkInterceptor(new LoggingInterceptor())
.build();
Request request = new Request.Builder()
.url("http://publicobject.com/helloworld.txt")
.build();
Call call = client.newCall(request);
Response response = call.execute();
if(response.isSuccessful()){
//返回的数据是 android okhttp机器人图案
System.out.println("response = " + response.body().string());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
//post
private void post(){
OkHttpClient client = new OkHttpClient();
String s = Build.BRAND + "/" + Build.MODEL + "/"+Build.VERSION.RELEASE;
Request request = new Request.Builder()
.url("http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0")
.addHeader("User-Agent",""+s)
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//输出异常
System.out.println("e ="+e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//输出 请求到的数据
System.out.println("response.body().string() = " + response.body().string());
}
});
}
public static final MediaType MEDIA_TYPE_MARKDOWN
= MediaType.parse("text/x-markdown; charset=utf-8");
public void postString(){
new Thread(new Runnable() {
@Override
public void run() {
try {
OkHttpClient client = new OkHttpClient();
String postBody = ""
+ "Releases\n"
+ "--------\n"
+ "\n"
+ " * _1.0_ May 6, 2013\n"
+ " * _1.1_ June 15, 2013\n"
+ " * _1.2_ August 11, 2013\n";
Request request = new Request.Builder()
.url("https://api.github.com/markdown/raw")
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN,postBody))
.build();
Response response = client.newCall(request).execute();
if(response.isSuccessful()){
//返回一堆 网页的布局 h2
System.out.println(response.body().string());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
public void form(){
//表单 post请求 携带参数
RequestBody requestBody = new FormBody.Builder()
.add("search","Jurassic Park")
.build();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://en.wikipedia.org/w/index.php")
.post(requestBody)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println(response.body().string());
}
});
}
public static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");
public void multipartBody() {
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("key","Value")
.addFormDataPart("key","filename",RequestBody.create(MEDIA_TYPE_PNG,new File("")))
.build();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.imgur.com/3/image")
.post(requestBody)
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println(response.body().string());
}
});
}
public void cache() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Cache cache = new Cache(getCacheDir(), 10 * 1024 * 1024);
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.build();
Request request = new Request.Builder()
.url("http://publicobject.com/helloworld.txt")
.cacheControl(CacheControl.FORCE_NETWORK)//强制走网络
.build();
Response response1 = client.newCall(request).execute();
String response1Body = response1.body().string();
System.out.println("Response 1 response: " + response1);
System.out.println("Response 1 cache response: " + response1.cacheResponse());
System.out.println("Response 1 network response: " + response1.networkResponse());
Response response2 = client.newCall(request).execute();
String response2Body = response2.body().string();
System.out.println("Response 2 response: " + response2);
System.out.println("Response 2 cache response: " + response2.cacheResponse());
System.out.println("Response 2 network response: " + response2.networkResponse());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
OkHttpClient client = new OkHttpClient();
public void perCall(){
Request request = new Request.Builder()
.url("https://en.wikipedia.org/w/index.php")
.build();
OkHttpClient okHttpClient1 = client.newBuilder().writeTimeout(10, TimeUnit.SECONDS).build();
OkHttpClient okHttpClient2 = client.newBuilder().writeTimeout(20,TimeUnit.SECONDS).build();
}
}
拦截器
public class LoggingInterceptor implements Interceptor{
@Override
//重写的方法
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
long t1 = System.nanoTime();
//logger.info(String.format("Sending request %s on %s%n%s",
// request.url(), chain.connection(), request.headers()));
Response response = chain.proceed(request);
long t2 = System.nanoTime();
// logger.info(String.format("Received response for %s in %.1fms%n%s",
// response.request().url(), (t2 - t1) / 1e6d, response.headers()));
System.out.println("t2 = " + (t2-t1));
return response;
}
}
简介 一个块设备驱动程序主要通过传输固定大小的随机数据来访问设备 Linux内核视块设备为与字符设备相异的基本设备类型 Linux块设备驱动程序接口使得块设备可以发挥其最大的功效,但是其复杂程序又是编程者必须面对的一个问题 一个数据块指的是固定大小的数据,而大小的值由内核确定 数据块的大小通常是4096个字节,但是可以根据体系结构和所使用的文件系统进行改变 与数据块对应的是扇...
项目开发中给元素添加/删除 class 是非常常见的行为之一, 例如网站导航都会给选中项添加一个 active 类用来区别选与未选中的样式,除了导航之外其他很多地方也都会用到这种方式处理选中与未选中。除了设置 class 我们在项目中也经常设置元素的内联样式 style,在 jquery 时代我们大多数都是利用 addClass 与 removeClass 结合使用来处理 class 的添加/删除,利用 css() 方法设置/获取元素的内联样式。那么在 vue 中 我们如何处理这类的效果呢?在 v.
对webservice服务进行性能优化,必然要考虑java容器的多线程并发处理,在此,简单介绍一下如何在tomcat7中配置多线程。操作系统环境:linux redhat6java环境:jdk6容器环境:tomcat7进入apache-tomcat-7.0.55/conf路径,修改server.xml文件。注释如下的原始配置 conn
http://blog.csdn.net/zgmzyr/article/details/6903500http://topmanopensource.iteye.com/blog/833386 在我们想监控我们的JVM状态的时候,除了可以通过JMX这类jvm提供的接口服务,还是可以自己通过程序来编写一些接口来获取服务器状态信息。以下代码我在jdk1.5.10版本上测试通过。...
本文章由cartzhang编写,转载请注明出处。 所有权利保留。 文章链接:http://blog.csdn.net/cartzhang/article/details/50680237 作者:cartzhang数据平滑处理由于需要处理硬件的传给数据,硬件是其他商家的。 坑爹的是发送频率太低了,20HZ左右,也是服气了。好处有么,肯定是便宜。 这个用在VR游戏上,不做评论了。 既然这样,
Transform[],GameObject[]这些class类型,Unity会进行自动初始化。但[ExecuteInEditMode]在编辑模式下执行的时候,会发现初始化其实也是有顺序的,并且在Update之后。这时候就会遇到等于NULL的情况。转载于:https://www.cnblogs.com/hont/p/4247940.html...
一 底层的数据结构HashMap底层是用的哈希表,哈希表是由数组+链表组成。思考:哈希表有什么优势呢?数组数组存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么我们...
<br />依赖关系冲突:Dependencies conflict ,报出的错误时很让人摸不到头脑的,一般都是这样的:cabal: dependenciesconflict: ghc-6.10.1 requires “somepackagename” ==1.0.1.1 however <br />“somepackagename” was excluded because ghc-6.10.1 requires “somepackagename”==1.0.1.0 <br />这不是一会儿说需要这个一
Android用Application设置全局变量以及使用 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用Application context。 首先需要重写Application,主要重写里面的onCreate方法,就是创建的时候
推荐使用蓝奏云生成文件链接来分享文件(文件夹):一般都够用(如果不超过100M大小)上传文件生成链接复制链接如果文件大小超过100M,可以考虑使用天翼云盘来分享推荐永久公开分享链接
直接上代码主程序代码:package com.cc.mygson;import java.net.Proxy.Type;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import com.google.gson.Gson;import com.go
hdu 5177 (1e18范围的卡特兰数)题意:求第n个卡特兰数,模3814697265625 (5^18)限制:有20组数据,1 思路:1. 卡特兰数的表达式:ans = 1/(n+1) * C(2*n,n)-> ans = 1/(n+1) * (2n)! / n! / n! ---1式2. 因为要模5^18,求逆元要求互质,所以先把"