使用okhttp发送http(post方法)

                一直想写博客来记录自己的学习状况,终于下定决心要来写这篇博客了。
最近一直在研究如何使用okhttp,现在终于可以发送了,哈哈。废话就不多说,接下来开始讲okhttp吧。目前主要讲如何通过post方法来发送http。此处有参考《第一行代码》

注意点一
               在使用okhttp之前,我们需要先在项目中添加okhttp的依赖。编辑app/build.gradle文件,在dependencies闭包中添加如下内容:
               dependencies {
               compile fileTree(dir: ‘libs’, include: [’*.jar’])
                androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2’, {
                exclude group: ‘com.android.support’, module: ‘support-annotations’
})
               compile ‘com.android.support:appcompat-v7:26.+’
                compile ‘com.android.support.constraint:constraint-layout:1.0.2’
                testCompile ‘junit:junit:4.12’
               compile’com.squareup.okhttp3:okhttp:3.4.1’
}

               添加上述依赖会自动下载两个库,一个是okhttp库,一个是okio库,后者是前者的通信基础。
注意点二
               做耗时的操作时要在一个子线程里写,如果写在主线程里,会卡死的。(这里描述得不是很好,欢迎大家来评论和指导)
注意点三
有关网络的操作都需要声明一下权限,因此我们需要在AndroidManifest.xml文件里加入权限声明,如下所示:
使用okhttp发送http(post方法)_第1张图片

                下面我们来看一下okhttp的具体用法:
1)创建一个OkHttpClient的实列,如下所示:
               OkHttpClient client = new OkHttpClient();
2)创建一个RequestBody对象(存放待提交的参数),如下所示:
               RequestBody requestBody = new FormBody.Builder()
                .add(“username”,et_username.getText().toString())
//et_username.getText().toString()是获取et_username的内容
                .add(“password”,et_password.getText().toString())
                .build();
3)在Request.Builder中调用一下post()方法,并将RequestBody对象传入:
               Request request = new Request.Builder()
                .url(“http://118.89.217.225:8080/Proj18/login”)
                .post(requestBody)
                .build();

//此处的url是一个后台的地址
4)调用OkHttpClient的newCall()方法来创建一个Call对象,并调用它的execute()方法来发送请求并获取服务器返回的数据,写法如下:
               Response response = client.newCall(request).execute();
//execute()同步请求,需要try和catch
//enqueue方法是异步请求
那如何得到返回的具体内容呢?具体写法如下:
                final String responseData = response.body().string();

这篇博客就写到这了,有说得不好或者不对的也希望大家来留言,给点建议。

我的demo(提取码:38sl)

你可能感兴趣的:(Android篇)