1. 在build.gradle里引入okhttp库

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.google.code.gson:gson:2.6.2'
}

2. 创建okhttp对象,这里是用赖汉模式,减少系统的记忆体消耗。

public class OkHttp {

    // okHttp
private static OkHttpClient okHttpClient; // 饿汉式
private static OkHttp okHttp = new OkHttp(); private OkHttp(){} public static OkHttp getInstance(){
okHttpClient = new OkHttpClient();
return okHttp;
}
}

3. 在okhttp对象里创建getResponse方法,返回服务器的回应。

    // 取得數據
private Request request;
private Response response;
private String strContext;
public String getResponse(String strURL) {
try {
// 创建okhttp Builder,从URL返回服务器的回应
request = new Request.Builder()
.url(strURL)
.build();
// response储存服务器的回应
response = okHttpClient.newCall(request).execute();
// 把response转换成string
strContext = response.body().string();
}catch (IOException e) {
strContext = e.toString();
}
return strContext;
}

4. 如果是想利用okhttp上传文件,可用uploadImage方法。

    // 上傳圖片
private String uploadResult;
public String uploadImage(String URL, String userId, File file, String fileName) {
try {
// MultipartBuilder,是上传文件的query
// addFormDataPart方法:@param [String]name, [String]value
// addFormDataPart方法:@param [String]name, [String]fileName, [String]fileType, [String]file
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("portrait", fileName,
RequestBody.create(MediaType.parse("image/jpg"), file))
.addFormDataPart("userId", userId)
.addFormDataPart("action", "updateProtrait")
.build(); // request方法: @param [String]URL, [RequestBody]requestBody
Request request = new Request.Builder()
.url(URL)
.post(requestBody)
.build(); // response储存服务器的回应
Response response = okHttpClient.newCall(request).execute();
// 把response转换成string
uploadResult = response.body().string(); } catch (IOException e) {
uploadResult = e.toString();
}
return uploadResult;
}

Okhttp教程 (1)的更多相关文章

  1. okhttp教程——起步篇

    okhttp教程--起步篇 这篇文章主要总结Android著名网络框架-okhttp的基础使用,后续可能会有关于他的高级使用. okhttp是什么 okhttp是Android端的一个Http客户端, ...

  2. OkHttp使用教程

    Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient.关于HttpURLConnection和HttpClient的选择>>官方博客尽管Go ...

  3. OkHttp使用进阶 译自OkHttp Github官方教程

    版权声明: 欢迎转载,但请保留文章原始出处 作者:GavinCT 出处:http://www.cnblogs.com/ct2011/p/3997368.html 没有使用过OkHttp的,可以先看Ok ...

  4. OkHttp使用进阶(译自OkHttp官方教程)

    没有使用过OkHttp的,可以先看OkHttp使用介绍 英文版原版地址 Recipes · square/okhttp Wiki 同步get 下载一个文件,打印他的响应头,以string形式打印响应体 ...

  5. OkHttp使用教程——网络操作之OkHttp, Volley以及Gson

    写这篇文章的动机 在安卓项目中有一个问题可能无法避免:网络.不管你是加载图片,请求API数据还是从因特网上获得一个字节,你都是在使用网络. 鉴于网络在安卓中的重要性与基础性,当今安卓开发者面临的问题之 ...

  6. Android简易实战教程--第四十七话《使用OKhttp回调方式获取网络信息》

    在之前的小案例中写过一篇使用HttpUrlConnection获取网络数据的例子.在OKhttp盛行的时代,当然要学会怎么使用它,本篇就对其基本使用做一个介绍,然后再使用它的接口回调的方式获取相同的数 ...

  7. OkHttp 设置 User-Agent 教程

    我们知道OkHttp走的并不是原生的http请求,因此在header里面并没有真正的User-Agent,而是“okhttp/版本号”这样的字符串,因为后台需要统计信息,要求传入正确的User-Age ...

  8. [转]OkHttp使用完全教程

    1. 历史上Http请求库优缺点 在讲述OkHttp之前, 我们看下没有OkHttp的时代, 我们是如何完成http请求的.在没有OkHttp的日子, 我们使用HttpURLConnection或者H ...

  9. 【转】OkHttp使用进阶 译自OkHttp Github官方教程

    作者:GavinCT 出处:http://www.cnblogs.com/ct2011/ 英文版原版地址 Recipes · square/okhttp Wiki 同步get 下载一个文件,打印他的响 ...

随机推荐

  1. [题解] CF438E The Child and Binary Tree

    CF438E The Child and Binary Tree Description 给一个大小为\(n\)的序列\(C\),保证\(C\)中每个元素各不相同,现在你要统计点权全在\(C\)中,且 ...

  2. Android进阶——学习AccessibilityService实现微信抢红包插件

    在你的手机更多设置或者高级设置中,我们会发现有个无障碍的功能,很多人不知道这个功能具体是干嘛的,其实这个功能是为了增强用户界面以帮助残障人士,或者可能暂时无法与设备充分交互的人们 它的具体实现是通过A ...

  3. Windows添加远程访问用户

    Windows远程访问 命令:mstsc ------------------------------------------------------------------------------- ...

  4. DRF源码-serializers

    class BaseSerializer(Field) """ The BaseSerializer class provides a minimal class whi ...

  5. django数据库读写分离

    django数据库读写分离 1. 配置数据库 settings.py文件中 用SQLite: DATABASES = { 'default': { 'ENGINE': 'django.db.backe ...

  6. VUE.js入门学习(1)-起步

    1.hello world <div id="app">{{content}}</div>var app = new Vue({ el:'#app', da ...

  7. 判断苹果和安卓端或者wp端

    window.onload = function() { var u = navigator.userAgent; if(u.indexOf('Android') > -1 || u.index ...

  8. Mysql时间范围分区(RANGE COLUMNS方式)

    1.创建测试表 CREATE TABLE `t_test` ( `id` ), `dates` DATETIME ); ALTER TABLE t_test ADD PRIMARY KEY (id); ...

  9. Aras Innovator Method集成Visual Studio

    首先下载集成安装包: https://github.com/RazorleafLabs/Aras-Integration-to-Visual-Studio 解压文件包,找到Aras-Integrati ...

  10. String StringBuffer和StringBuilder的区别和联系

    1:String,StringBuffer和StringBuilder概念 1.1:String String中使用字符串数组来存储字符串,但是是fianl来修饰的,所以String的内容不可改变. ...