OKHttp网络链接获取数据和下载更新

代码,前提是先要导入一个OKIO.jar 包和一个OKHttp.jar 包

// 后期写有 OkHttp 的get请求和post请求详解

// OkHttp 网络框架的封装

 

              
        // 创建一个OkHttp
	OkHttpClient okHttpClient = new OkHttpClient();
	// 创建一个Request
	final Request request = new Request.Builder().url("http://www.oschina.net/action/api/tweet_list").build();
	// 创建一个Call
	Call call = okHttpClient.newCall(request);



        call.enqueue(new Callback() {

			// 返回请求到的数据,相当于一个主线程
			@Override
			public void onResponse(Response response) throws IOException {
				// TODO Auto-generated method stub
			        // 拿到IO数据
				InputStream byteStream = response.body().byteStream();
                                //拿到字符串
                                String string = response.body().string();
                                // 创建一个runOnUI
                                runOnUiThread(new Runnable() {
					@Override
					public void run() {
							// TODO Auto-generated method stub
							// 更新UI
					}
					});
			}

                        // 
			@Override
			public void onFailure(Request request, IOException ioException) {
				// TODO Auto-generated method stub

			}

		});

下载器:

需要导入包:XUtils.jar 包

代码:

// 创建HttpUtils
	private HttpUtils httpUtils = new HttpUtils();
	private HttpHandler<File> httpHandler;
        
//第一个参数下载APK的下载地址,第二个是存放地址,第三个参数是允许不允许续传,第四个创建一个下载的过程
        httpHandler = httpUtils.download(apkUrl, "/sdcaard/" + System.currentTimeMillis() + "yidiantong.apk", true,
				new RequestCallBack<File>() {

					// 下载跟新的方法
					@Override
					public void onLoading(long total, long current, boolean isUploading) {
						// TODO Auto-generated method stub
						super.onLoading(total, current, isUploading);
						my_Button.setText("正在下载...");
					}

					// 下载跟新的方法
					@Override
					public void onSuccess(ResponseInfo<File> arg0) {
						// TODO Auto-generated method stub
						my_Button.setText("下载完成");

						// 得到下载到的APK的路径
                                                //可以直接打开下载的APP进行安装
						String path = arg0.result.getPath();
						File file = new File(path);
						Intent intent = new Intent(Intent.ACTION_VIEW);
						intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
						startActivity(intent);
					}

					// 下载失败的方法
					@Override
					public void onFailure(HttpException arg0, String arg1) {
						// TODO Auto-generated method stub
						my_Button.setText("下载失败");
					}
				});

 

由于写的不是很详细,再来简单的补充一下

OkHttp的get请求和post请求

get请求

    
    //OkHttp的get请求方法
    public void getRequest(View view) {

        //创建Request,存放数据的
        final Request request = new Request.Builder().url("http://www.baidu.com").build();
        //用到的OkHttpClient
        OkHttpClient okHttp = new OkHttpClient();
        //执行者
        Call call = okHttp.newCall(request);

        //执行代码块
        call.enqueue(new Callback() {

            //请求失败的方法
            @Override
            public void onFailure(Call call, IOException e) {
                mText.setText("请求失败");
            }

            //请求成功的方法
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //此方法此时不在主线程中
                final String string = response.body().string();

                //更细UI需在主线程中, runOnUIThread方法
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //更新UI
                        mText.setText(string);
                    }
                });
            }
        });
    }

post请求

    //post请求
    public void posttRequest(View view) {
        //用到的OkHttpClient
        OkHttpClient okHttpClient = new OkHttpClient();

        //创建FormBody.Buildy,保存传输的数据
        FormBody.Builder formBody = new FormBody.Builder();

        //调用add方法,方法采用 key,value 方法保存
        //第一个参数,保存的是key, 第二个参数是value
        formBody.add("username", "18600703694");
        formBody.add("password", "123456789");

        //创建Request,存放数据的
        Request request = new Request.Builder().url("提交地址").post(formBody.build()).build();

        //执行者
        Call call = okHttpClient.newCall(request);

        //执行代码块
        call.enqueue(new Callback() {
            //请求失败的方法
            @Override
            public void onFailure(Call call, IOException e) {

            }

            //请求成功的方法
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //此方法此时不在主线程中
                final String string = response.body().string();

                //更细UI需在主线程中, runOnUIThread方法
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //更新UI
                        mText.setText(string);
                    }
                });
            }
        });
    }

OkHttp网络框架

转载于:https://my.oschina.net/jaume/blog/737841

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值