代碼,前提是先要導入一個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網絡框架