1. 程式人生 > >HttpUrlConnection 下的post, get , 和圖片下載(工具類)

HttpUrlConnection 下的post, get , 和圖片下載(工具類)

HttpURLConnection 下的網路請求

  • 1.IsNet->網路判斷->HttpAsync中發起網路請求前使用
    2.HttpGetUtils->get請求工具類(發起請求獲取伺服器返回值)->
    HttpAsync->doinbackground->耗時聯網操作
    • 3.HttpAsync->非同步請求工具類->開啟子執行緒耗時操作->網路判斷;網路請求
    • 問題:HttpAsync獲取資料無法傳遞給Mainactivity?
    • 回撥方式解決
    • 4.NetCallBack->回撥介面->回撥資料
    • 5.MainActivity實現回撥介面->給Netcallback介面型別賦值
    • 6.MainActivity物件傳遞給HttpAsync->a.上下文;b.回撥介面物件
    • 7.httpAsync onPostExcute方法中使用回撥傳遞資料給Mainactivity
    • 8.MainActivity去resultstr處理字串操作;resultBitmap顯示圖片;erro提示使用者錯誤訊息
    • 9.AsyncContro控制產生HttpAsync物件以及呼叫excute方法開啟非同步類

網路判斷工具類

package com.sxt.day05_network;

import android.content.Context;
import android.net.ConnectivityManager;
import
android.net.NetworkInfo; import android.net.NetworkInfo.State; /** * 網路判斷工具類 * */ public class IsNet { private Context ctx;//上下文 public IsNet(Context ctx){ this.ctx = ctx; } //返回值為true有網,為false情況下無網 public boolean IsNetWork(){ //ConnectivityManager->手機連線管理器 //getSystemService->獲取系統服務
ConnectivityManager manager = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE); //網路狀態封裝類 NetworkInfo info; //網路狀態 State state; //TYPE_MOBILE->行動網路型別 info = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if(info !=null){ state = info.getState(); //判斷狀態是否連線 if(state == State.CONNECTED){ return true; } } info = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if(info!=null){ state = info.getState(); if(state == State.CONNECTED){ return true; } } return false; } }

http—-post 請求

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * POST請求工具類
 * */
public class HttpPostUtils {

    //urlPath->請求地址
    //Params->請求引數
    public String PostStr(String urlPath,String Params){
        String result = null;
        try {
            URL url = new URL(urlPath);
            HttpURLConnection httpc = (HttpURLConnection) url.openConnection();
            httpc.setRequestMethod("POST");
            httpc.setConnectTimeout(60*1000);
            httpc.setReadTimeout(60*1000);
            httpc.setDoInput(true);
            httpc.setDoOutput(true);
            OutputStream out = httpc.getOutputStream();//獲取上傳引數的輸出流
            out.write(Params.getBytes());
            out.flush();
            out.close();
            if(httpc.getResponseCode() == 200){
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(
                                httpc.getInputStream()));
                StringBuffer sb = new StringBuffer();
                String line;
                while((line = br.readLine())!=null){
                    sb.append(line);
                }
                br.close();
                result = sb.toString();
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }

}

Http—–get

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.util.Log;

public class HttpGetUtils {


    /**
     * Get方式請求伺服器資料方法
     * urlPath:完整請求url地址
     * result:伺服器響應資料
     * */
    public String getStr(String urlPath){
        String result = null;
        try {
            Log.e("","檢視請求地址是否錯誤"+urlPath);
            //URL->伺服器地址封裝開啟urlconnection(請求配置,發起請求,獲取相應狀態,獲取返回流)
            URL url = new URL(urlPath);
            HttpURLConnection httpc = (HttpURLConnection) url.openConnection();
            //請求方式設定
            httpc.setRequestMethod("GET");
            //連線超時
            httpc.setConnectTimeout(60*1000);
            //讀取超時
            httpc.setReadTimeout(60*1000);
            //允許讀入
            httpc.setDoInput(true);
            //獲取響應狀態碼->獲取響應狀態時傳送請求->200 請求成功
            if(httpc.getResponseCode() == 200){
                //伺服器資料讀取到應用中
                //伺服器返回流轉化為字元流              
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(
                                httpc.getInputStream()));
                StringBuffer sb = new StringBuffer();
                String line;
                while((line = br.readLine()) != null){
                    sb.append(line);
                }
                br.close();
                result = sb.toString();
                Log.e("","檢視返回值"+result);
            }
        } catch (MalformedURLException e) {
            //url生成異常
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

}

Http—–下載圖片

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

/**
 * 獲取伺服器圖片工具類
 * */
public class HttpBitmapUtils {

    public Bitmap downBitmap(String urlPath){
        Bitmap bitmap = null;
        try {
            URL url = new URL(urlPath);
            HttpURLConnection httpc = (HttpURLConnection) url.openConnection();
            httpc.setConnectTimeout(60*1000);
            httpc.setReadTimeout(60*1000);
            if(httpc.getResponseCode() == 200){
                InputStream in = httpc.getInputStream();
                //BitmapFactory->不同方式讀取圖片進入程式中
                bitmap = BitmapFactory.decodeStream(in);
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return bitmap;
    }

}

最後附上實現的效果

這裡寫圖片描述

相關推薦

HttpUrlConnection post, get , 圖片下載工具

HttpURLConnection 下的網路請求 1.IsNet->網路判斷->HttpAsync中發起網路請求前使用 2.HttpGetUtils->get請求工具

Linux靜態庫動態庫共享庫

Linux作業系統支援的函式庫分為靜態庫和動態庫,動態庫又稱共享庫。linux系統有幾個重要的目錄存放相應的函式庫,如/lib /usr/lib。 靜態函式庫:       這類庫的名字一般是libxxx.a;利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目的碼中,他的優點就顯而易見了

Windows一個複製刪除檔案資料夾的bat指令碼

:: 指令碼建立時最好選擇GB2312編碼 :: @echo off 表示不回顯執行的命令 @echo off ::設定源路徑和目的路徑,使用該變數時需要用一對%包起來 set SRC_PATH=..

使用HttpURlConnection 傳送POST請求上傳檔案帶引數

前言 最近在做一個部落格的小專案,需要用到檔案上傳,HttpClient又被Android給棄用了,圖片框架暫時還沒學。只能使用HttpURLConnection來上傳。折騰了好久,今天終於順利地跟後臺完成了對接。因此,寫這篇部落格梳理一下知識。 理論知

java中的getset方法比較詳細

屬性的訪問器包含與獲取(讀取或計算)或設定(寫)屬性有關的可執行語句。訪問器宣告可以包含 get 訪問器或 set 訪問器,或者兩者均包含。宣告採用下列形式之一: set {accessor-body} get {accessor-body} 其中: accessor-bod

python3-TCP服務器客戶端socketserver

env amr rip address ctrl+c utf-8 request ctrl reat #!/usr/bin/env python3 import socket import sys HOST="localhost" PORT=21200 ADDR=(H

Java 下載圖片下載檔案 工具

//                         _ooOoo_   //                        o8888888o   //                        88" . "88   //                       

下載檔案工具

一、 import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection;

工具Linux筆記之終端日誌記錄工具script

工具類 article 空間 post 令行 有時 可能 關於 edit 在學習Linux時,有時候終端的打印消息對於我們很重要,可是終端顯示也是有一定的緩沖空間的。當信息打印許多時,前面的信息就會被覆蓋掉。所以這裏網上搜索了一下這方面的介紹。現總結例如以下:

easypoi Excel匯入匯出 工具

1.用到的jar 紅色的必須的。 下面那些是執行起來,缺哪個就導哪個。 如果報錯提示沒有這個方法的話,重啟Tomcat,還不好使就是jar包版本不對,找個高點的版本。  easypoi-annotation-3.1.0.jar easypoi-base-3.1.0.j

檔案上傳工具

一、 import java.io.File; import java.io.IOException; import javax.servlet.http.HttpServletRequest; i

利用java生成UUID工具

package test.demo1; import java.util.UUID; public class UUIDUtil { public static String creatU

使用static工具

static類可以看作某一組方法的集合,也能夠更好的複用程式碼.static類各個方法應當是無狀態的(stateless),即沒有成員變數儲存中間狀態(結果),每個函式相互獨立.所以很多人批評static類是面向過程開發思想的產物,應當極力避免使用。也有人使用某種方法將static看起來更加符合OOP [參考

JAVA中時間與字串的相互轉換工具

<span style="font-size:24px;">//model為字串的時間格式,如"<span style="font-family: arial; line-heigh

何時使用static工具

一個static類,指全部成員都是static方法構成的,而沒有任何成員變數, 也稱為Utility class 或者Utility Pattern [參考: Utility Pattern].它可以在程式中直接使用該類的方法,而不用例項化.static class相對單例有

【最簡單的解決方案】spring框架中普通工具呼叫service

                   這套解決方案,純屬博主自己琢磨相出,絕非網上那些隨意轉載的解決方案!!                                                                                  

Math工具

4.0 大於 nbsp 基本 整數 一個 最大整數 col 工具 math類 Math 類是包含用於執行基本數學運算的方法的數學工具類,如初等指數、對數、平方根和三角函數。 工具類一般為靜態方法,直接用類名 常用方法 abs方法,結果都為正數 doub

Arrays工具

常用 ear 靜態方法 字符 string 進行 arraycopy 元素 復制 Arrays類(靜態方法) 一般和ArrayList集合用 常用的方法有三種 sort方法,用來對指定數組中的元素進行排序(元素值從小到大進行排序) //源arr數組元素

spring boot使用nginxftp伺服器實現圖片上傳下載windows server

本人使用的springboot為1.5.6版本<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-pa

Scrapy豆瓣電影top250excel儲存圖片下載

豆瓣電影top250url地址:https://movie.douban.com/top250?start= 一. 明確獲取資料資訊(item) 分析頁面上的內容可以獲取到的資料資訊是電影的名稱、導演、演員、簡介、上映時間、評分、參與評分人數、圖片的url地址.在scrapy的item