OKHttp網絡連接獲取數據和下載更新

代碼,前提是先要導入一個OKIO.jar 包和一個OKHttp.jar 包java

// 後期寫有 OkHttp 的get請求和post請求詳解android

// OkHttp 網絡框架的封裝api

 

// 建立一個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 包app

代碼:框架

// 建立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("下載失敗");
					}
				});

 

因爲寫的不是很詳細,再來簡單的補充一下ide

OkHttp的get請求和post請求post

get請求ui

//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請求url

//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網絡框架

相關文章
相關標籤/搜索