1、OkHttp框架使用了OkIo框架,不要忘记下OkIo.jar

2、通过POST访问网络,和通过GET访问网络基本相同,多了设置请求参数的过程。主要分为五步:

(1)、声明并实例化一个OkHttpClient对象

(2)、声明并实例化一个RequestBody对象

(3)、声明并实例化一个Request对象

(4)、执行Request请求,并得到一个Response对象

(5)、根据Response的isSuccessful()方法判断是否成功,然后从Response对象中获取返回数据。

3、

public class PostActivity extends Activity {
private OkHttpClient client = new OkHttpClient(); private TextView mTvPost; private String url = "https://www.baidu.com/"; private String result = ""; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post); initView(); new Thread(postThread).start();
} public void initView(){
mTvPost = (TextView) findViewById(R.id.tv_post_show);
} private Handler postHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
mTvPost.setText(result);
};
}; private Thread postThread = new Thread(){
public void run() {
try {
run();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} postHandler.sendEmptyMessage(0);
};
}; /** Posting a String */
public static final MediaType jsonReq = MediaType.parse("application/json;charset=utf-8"); public void run() throws IOException {
RequestBody body = RequestBody.create(jsonReq, "{\"name\", \"name\"}");
Request request = new Request.Builder().url(url).post(body).build();
Response response = client.newCall(request).execute();
result += response.body().string();
} /** Posting a File */
public static final MediaType MEDIA_TYPE_MARKDOWN1 = MediaType.parse("text/x-markdown;charset=utf-8"); public void run2() throws Exception {
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/IMG_20151030_205855.jpg");
Request request = new Request.Builder().url(url).post(RequestBody.create(MEDIA_TYPE_MARKDOWN, file)).build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()){
result += "出错" + response;
}else{
result += "没有出错" +response.body().string();
}
} /** Posting from parameters */
public void run3() throws Exception {
RequestBody formBody = new FormEncodingBuilder().add("search","Jurassic Park").build();
Request request = new Request.Builder().url(url).post(formBody).build();
Response response = client.newCall(request).execute(); if (!response.isSuccessful()){
result += "出错了";
}else{
result += response.body().toString();
}
} /** Posing Json with Gson */
private final Gson gson = new Gson(); public void run5() throws Exception {
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()){
result += "出错了";
}else{
Gist gist = gson.fromJson(response.body().charStream(), Gist.class);
for (Map.Entry<String, GistFile> entry : gist.files.entrySet()) {
result += entry.getKey() + entry.getValue().content;
}
}
} static class Gist {
Map<String, GistFile> files;
} static class GistFile {
String content;
} }

4、访问网络不能在主线程中进行,还有不要忘记加入访问网络的权限。

<uses-permission android:name="android.permission.INTERNET" />

5、对于Request对象是如何实例化的,大家可以参考--java builder模式

http://www.cnblogs.com/moonz-wu/archive/2011/01/11/1932473.html

6、参考博文:

http://www.2cto.com/kf/201505/397557.html

Android网络开发之OkHttp--基本用法POST的更多相关文章

  1. Android网络开发之OkHttp--基本用法GET

    1.OkHttp框架使用了OkIo.jar包,不要忘记添加. 2.对于Request对象是如何实例化的,大家可以参考--java builder设计模式 http://www.cnblogs.com/ ...

  2. Android网络开发之Volley--Volley基本用法ImageRequest(三)

    1.ImageRequest用法和StringRequest一样,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置ImageRequest对象参数,并将ImageReque ...

  3. Android网络开发之Volley--Volley基本用法JsonObjectReques(二)

    1.JsonObjectRequest用法 用法和StringRequest基本相同,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置JsonObjectRequest对象 ...

  4. Android网络开发之Volley--Volley基本用法StringRequest(一)

    1.StringRequest用法 主要分为3步: (1).实例化一个RequestQueue对象 (2).设置StringRequest对象参数,并将StringRequest对象加入Request ...

  5. Android网络开发之OkHttp--基本用法实例化各个对象

    1.实例化OkHttpClient对象,OkHttpClient包含了以下属性,以及set()和get()方法.但并没有包含具体的执行方法,详情见源码. //实例化OkHttpClent对象 priv ...

  6. Android 网络开发之WIFI

    WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为&qu ...

  7. Android网络开发之用tcpdump抓包

    Android开发过程中,当涉及到网络通信的时候,有一些字段须要抓包获取.我之前由于SSDP设备发现的包头格式没有写对,经过抓包分析和标准包头对照发现了这个困扰我非常久的问题.总之,掌握在Androi ...

  8. Android网络开发之Volley--Volley自定义Request

    1.自定义一个解析Json的Request,这里使用JackSon框架来解析Json.你也可以自定义一个解析XML的Request,或者使用FastSon来解析Json. 2.我们首先来看一下Stri ...

  9. Android网络开发之WIFI

    WIFI全称Wireless Fidelity, 又称802.11b标准.WIFI联盟成立于1999年,当时的名称叫做Wireless Ethernet Compatibility Alliance( ...

随机推荐

  1. c语言中->的一个作用

    为了使用方便和直观,c语言中结构体指针带成员(*p).num可以用p->num来代替. ->称为指向运算符:

  2. NSBundle的用法

    bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBu ...

  3. pro文件常用内容

    qmake生成的pro文件中常用变量 SUBDIRS 指定子目录 TARGET 指定生成的应用程序名(默认为项目名) DEPENDPATH 指定程序编译时依赖的相关路径 INCLUDEPATH 指定头 ...

  4. makesfx.exe (Make SFX (Self-extracting archive))

    来源: http://www.cr173.com/soft/5500.html http://74.cz/en/make-sfx/ 官方,最新 Make SFX 是一套Win32平台下能让您制作自解压 ...

  5. 关于在MyEclipse中页面中文乱码的问题

    1.首先在Window>preferences>General>Workspace中改为UTF-8. 2.将项目的Properties>Resource改为UTF-8. 3.将 ...

  6. strictmode

    最新的Android平台中(Android 2.3起),新增加了一个新的类,叫StrictMode(android.os.StrictMode).这个类可以用来帮助开发者改进他们编写的应用,并且提供了 ...

  7. UIKit控件直接显示网页文字内容

    NSString *html = @"<bold>Hello</bold> Now<br> <em>iOS</em> can cr ...

  8. json对象的简单介绍

    1.JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任 ...

  9. GameUnity 2.0 文档(二) 纸片人系统

    本想快速的 把 之前写的类库,一股脑的 给大家 ,但又觉得,如 msdn那样的 文档,并不能给 初学者 所能接受. 因为 大部分人 对 api 还是比较陌生,也不愿意 去研究和组合. 那么 今天我选用 ...

  10. UIImage 和 UIImageView区别

    // // ViewController.m // 06-UIImage 和 UIImageView // // Created by Stephen on 16/4/18. // Copyright ...