android post两种方式,安卓中使用OkHttp发送数据请求的两种方式(同、异步的GET、POST) 示例-- Android基础...

packagethonlon.example.cn.simpleokhttpdemo;importandroid.app.Activity;importandroid.app.Application;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;importandroid.widget.Toast;importjava.io.IOException;importokhttp3.Call;importokhttp3.Callback;importokhttp3.FormBody;importokhttp3.OkHttpClient;importokhttp3.Request;importokhttp3.Response;public class MainActivity extends AppCompatActivity implementsView.OnClickListener {privateTextView tv;privateButton btn_async_request, btn_sync_request, btn_async_post, btn_sync_post;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

}/*** 初始化视图*/

public voidinitView() {

tv=(TextView) findViewById(R.id.tv);

btn_async_request=(Button) findViewById(R.id.btn_async_request);

btn_sync_request=(Button) findViewById(R.id.btn_sync_request);

btn_async_post=(Button) findViewById(R.id.btn_async_post);

btn_sync_post=(Button) findViewById(R.id.btn_sync_post);

btn_async_request.setOnClickListener(this);

btn_sync_request.setOnClickListener(this);

btn_async_post.setOnClickListener(this);

btn_sync_post.setOnClickListener(this);

}/*** 点击事件

*@paramview*/@Overridepublic voidonClick(View view) {switch(view.getId()) {case R.id.btn_async_request://执行get方式的异步请求

getAsyncRequest();break;case R.id.btn_sync_request://执行get方式的同步请求

getSyncRequest();break;case R.id.btn_async_post://执行post方式的异步请求

postAsynsRequest();break;case R.id.btn_sync_post://执行post方式的同步请求

postSyncRequest();break;

}

}/*** 输出内容到TextView

*@paramrequest*/

public void showRequest(finalString request) {

runOnUiThread(newRunnable() {

@Overridepublic voidrun() {

tv.setText(request);

}

});

}/*** 发送异步GET请求*/

private voidgetAsyncRequest() {//建立OkHttpClient对象

OkHttpClient okhttpClient = newOkHttpClient();//建立Request对象

Request request = newRequest.Builder()

.url("https://www.haha.mx/joke/2730898")//请求的地址,根据需求带参

.build();//建立call对象

Call call =okhttpClient.newCall(request);

call.enqueue(newCallback() {/*** 请求失败后执行

*@paramcall

*@parame*/@Overridepublic voidonFailure(Call call, IOException e) {

Toast.makeText(MainActivity.this,"异步get方式请求数据失败!",Toast.LENGTH_LONG).show();

}/*** 请求成功后执行

*@paramcall

*@paramresponse

*@throwsIOException*/@Overridepublic void onResponse(Call call, Response response) throwsIOException {final String res =response.body().string();

runOnUiThread(newRunnable() {

@Overridepublic voidrun() {

Toast.makeText(MainActivity.this,"异步get方式请求数据成功!",Toast.LENGTH_LONG).show();

showRequest(res);

}

});

}

});

}/*** 发送同步的get请求*/

public voidgetSyncRequest() {new Thread(newRunnable() {

@Overridepublic voidrun() {

OkHttpClient okHttpClient= newOkHttpClient();

Request request= newRequest.Builder()

.url("http://hibernate.org/orm/releases/5.3/")

.build();try{

Response response=okHttpClient.newCall(request).execute();

String responseResult=response.body().string();

showRequest(responseResult);

}catch(IOException e) {

e.printStackTrace();

}

}

}).start();

}/*** 发送异步post()请求*/

private voidpostAsynsRequest() {

OkHttpClient okhttpClient= newOkHttpClient();

FormBody.Builder formBody= new FormBody.Builder();//建立表单请求体

formBody.add("usernam", "Thanlon");

formBody.add("password", "123");

Request request= newRequest.Builder()

.url("https://www.baidu.com")

.post(formBody.build())

.build();

Call call2=okhttpClient.newCall(request);

call2.enqueue(newCallback() {

@Overridepublic voidonFailure(Call call, IOException e) {

Toast.makeText(MainActivity.this,"异步post请求数据失败!",Toast.LENGTH_LONG).show();

}

@Overridepublic void onResponse(Call call, Response response) throwsIOException {final String res =response.body().string();

runOnUiThread(newRunnable() {

@Overridepublic voidrun() {

Toast.makeText(MainActivity.this,"post异步请求数据成功!",Toast.LENGTH_LONG).show();

showRequest(res);

}

});

}

});

}/*** 发送同步的post请求*/

public voidpostSyncRequest() {new Thread(newRunnable() {

@Overridepublic voidrun() {

OkHttpClient okHttpClient= newOkHttpClient();

FormBody.Builder formBody= newFormBody.Builder();

formBody.add("username", "Thanlon");

formBody.add("password", "123");

Request request= newRequest.Builder()

.url("https://www.douban.com")

.post(formBody.build())

.build();try{

Response response=okHttpClient.newCall(request).execute();

String responseResult=response.body().string();

showRequest(responseResult);

}catch(IOException e) {

e.printStackTrace();

}

}

}).start();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值