1. 程式人生 > >SSM + Android 網路互動的那些事

SSM + Android 網路互動的那些事

    ssm做為後臺與android互動,相信只要是瞭解過的人都知道一些基本的資料互動,向json,物件,map的互動就像喝水一樣簡單,這些基本的互動也是學習ssm後臺開發的基本,但是好多人卻是會忽略檔案的互動。畢竟大多數培訓老師是沒有講這些東西的(至少小編我的啟蒙老師就沒有介紹過)。好了廢話不多說,直接上!!!!!!!!

     在這裡我用的是okHttp網路請求框架:https://github.com/square/okhttp(官方的開源庫)

     ①ssm服務端的做法步驟:

1. 在 spring-servlet.xml 配置檔案中加入下面的程式碼,用以通知spring載入檔案上傳處理器:

<!-- 定義檔案上傳處理器 -->
 <bean id="multipartResolver"
  class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
  p:defaultEncoding="UTF-8" />

2.ssm 控制器編寫的對映關係:

    @RequestMapping(value="user/postFile.action",method = RequestMethod.POST)
    @ResponseBody
    public String postFile(@RequestParam("file") MultipartFile file){

        String name = file.getContentType();
        System.out.println(name);
//        if(file.isEmpty()){
//        
//            System.out.println("fial");
//            //return "successful";
//        }else{
//            System.out.println("successful");
//            //return "fail";
//        }

   return null;

3,記得加一個依賴庫,commons-fileupload.jar 。如果用的是maven管理的話在pom.xml中加入下面依賴就好!

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.2</version>
</dependency>

 ②android 通過okhttp上傳檔案(multipart form/data)

public Request postFile(String url,File file){

    RequestBody fileBody = RequestBody.create(MediaType.parse("image/jpg"), file);
MultipartBody.Builder builder = new MultipartBody.Builder();
builder.setType(MultipartBody.FORM)
            .addFormDataPart("file","welcome_crop.jpg",fileBody);
RequestBody requestBody = builder.build();
Request request = new Request.Builder().url(url)
            .post(requestBody)
            .build();
    return request;
}

public void execute(final Request request, BaseCallBack callBack){

    if(callBack == null){
        callBack = BaseCallBack.CALLBACK_DEFAULT;
}
    final BaseCallBack finalCallBack = callBack;
client.newCall(request).enqueue(new Callback() {
        @Override
public void onFailure(Call call, IOException e) {
            sendFailedResult(call,e,finalCallBack);
}

        @Override
public void onResponse(Call call, Response response) throws IOException {
            if (call.isCanceled()){
                sendFailedResult(call,new Exception("response is canceled"),finalCallBack);
                return;
}
            Log.d(TAG,""+response.code());
            if (!finalCallBack.validateResponse(response)){
                sendFailedResult(call,new Exception("response is failed"+response.code()),finalCallBack);
                return;
}
            try {
                Object object = finalCallBack.parseResponse(response);
sendSuccessResult(object,finalCallBack);
}catch (Exception e){
                e.printStackTrace();
}finally {
                if(response.body()!=null){
                    response.close();
}
            }
        }
    });
}
呼叫
Request fileRequest = OkHttpUtils.getInstance().postFile(url,file);
OkHttpUtils.getInstance().execute(fileRequest, new MyStringCallBack());

https://github.com/ggyuer/ssmAndandroid(Android 端okhttp請求,服務端用自己的)

}


相關推薦

SSM + Android 網路互動那些

    ssm做為後臺與android互動,相信只要是瞭解過的人都知道一些基本的資料互動,向json,物件,map的互動就像喝水一樣簡單,這些基本的互動也是學習ssm後臺開發的基本,但是好多人卻是會忽

談談國外網路干擾那些

極致的應用體驗應該是每個應用都應該追求的,競品間的體驗差距應該都是體現在細節方面,如在差網路下的視訊載入速度,載入大量圖片列表時的流暢度,而網路,則是這些體驗的前提,如果網路不通,連資料都沒有辦法載入,這對於產品來說,是致命的,這很有可能導致辛辛苦苦運營積累的使用者的流失。對於在海外運營的產品來說,網路問題甚

Android textview 花裡胡哨 那些

1.文字畫出來 https://github.com/totond/TextPathView 2.跑馬燈 https://github.com/Marksss/AndroidAutoSwitcher https://github.com/dreamlivemeng/UpMarquee

android 開發錄音那些(錄音許可權授權及判斷錄音許可權是否拒絕處理)

在專案開發錄音功能是,OnTouchListener呼叫時使用錄音功能,接下來就總結下開發過程中遇到的問題及解決辦法: (1)第一次點選時會跳出選擇是否授權錄音許可權的對話款,操作後會發現程式崩掉,怎麼來監測彈出授權對話方塊呢?這是一個十分困擾的問題對吧,經過本人就Moti

搞懂 Android Studio 構建那些

1.Android 構建系統構建 APK 的過程是個相當複雜的過程,Android 構建系統需要將應用的資原始檔和原始檔一同打包到最終的 APK 檔案中。應用可能會依賴一些外部庫,構建工具要靈活地管理這些依賴的下載、編譯、打包(包括合併、解決衝突、資源優化)等過程。應用的原始

關於android資原始檔那些

很多時候,我們拿到一個開發到一半的專案來接手做的時候,很多時候 都感覺一團亂麻,有的是沒註釋,有的是程式碼可讀性差,各種引數,數值隨意放,這時候我們就需要把他們放到他們該去的地方,減少專案的維護難度,為後來接鍋的人留條活路。 在android中的資源指的是非程式碼部分的,指

Android HOME鍵那些

       遊戲中常常需要監聽android HOME鍵,當HOME鍵下壓時,往往需要做一些狀態儲存,音效停止等操作,那麼如何做,才能監聽到HOME鍵呢?我們知道HOME是系統鍵,app中無法通過onKey這些函式來處理。要妥善的處理HOME鍵,首先需要看看HOME鍵下壓

Android Studio 構建那些

Android 構建系統 概述 構建 APK 的過程是個相當複雜的過程,Android 構建系統需要將應用的資原始檔和原始檔一同打包到最終的 APK 檔案中。應用可能會依賴一些外部庫,構建工具要靈活地管理這些依賴的下載、編譯、打包(包括合併、解決衝突、資

Android Q 相容那些

5 月 20 號參加了 Android Q Labs,因此本篇說一說會議的部分內容以及自己的一些想法。 會議主要是加深開發者對 Android Q 的瞭解,從而幫助開發者做好 Android Q 的相容工作。 因此本篇我會選擇性說明一些在 Android Q 上你需要相容的一些事情。 1. 後臺 Acti

Dubbo系列之 (七)網路那些(2)

# 輔助連結 ## [Dubbo系列之 (一)SPI擴充套件 ](https://www.cnblogs.com/liferecord/p/13445631.html) ## [Dubbo系列之 (二)Registry註冊中心-註冊(1)](https://www.cnblogs.com/liferecord

Android Studio 那些|Activity文件前標識圖標顯示為 j 而是 c

div roi 右下角 ext blog 識圖 cti 問題: content 問題:Activity文件前標識圖標顯示為 j 而是 c 的圖標,或是沒有顯示,並且自己主動提示不提示 解決:這是由於你的studio設置了省電模式,你能夠通過 File>

分享一下身邊朋友自學android開發及找工作的那些!【不足勿噴】

自己的 tis 快速 就是 和我 and 好處 adapt 分享 寫在前面 前不久身邊一個朋友突然告訴我他把原來的工作辭掉了,我問他最近在幹嘛,他說他最近兩個月學了java及android然後花了1周時間找工作,我問他現在怎麽樣了。他說比不上我們身邊這些10K-20K的現在

IOS —— 網路那些(上) - http協議

作為一名並不太合格的程式設計師,今天要分享學習的成果,竟然講的是網路相關HTTP協議的事情。(也算是複習了) 乍看HTTP協議的內容著實是十分複雜的,涉及到十分多網際網路"底層"框架的東西。今天就先撇開這部分詳細內容。 簡單的來說說HTTP協議,以及連線的事項。 HTTP協議發展至今也有二十多年曆史,版

Native與H5互動那些

前言 Hybrid開發模式目前幾乎每家公司都有涉及和使用,這種開發模式兼具良好的Native使用者互動體驗的優勢與WebApp跨平臺的優勢,而這種模式,在Android中必然需要WebView作為載體來展示H5內容和進行互動,而WebView的各種安全性、相容性的問題,我想大多數人與它友誼的小床

GCP 建立 SSH 連線登入VM方式 « 關於網路那些...

進入 GCP dashboard 檢視VM 右邊選單> Compute Engine 這裡面會列出 VM 執行個體 檢視 VM 個體資訊 點選其中一個 VM

Lumen 擴充 generator « 關於網路那些...

Lumen 主旨在建立一個快速微服務框架 在預設的功能中,僅保留少數 laravel 原生功能專案 舉例來說,Lumen 不提供 artisan make:con

Git 提交訊息樣式建議 « 關於網路那些...

Git 官方建議的提交訊息樣式,可以讓提交訊息更加容易理解及管理 原則上,可以將訊息分成三種型態 型別:標題 內容 註解 類別 首先,在 commit 標題之

gcloud SDK 安裝及建立 google repository « 關於網路那些...

下載 gcp sdk 下載 macOS 64 位元 (x86_64) 初始化安裝 將資料夾解壓縮後,放置自己的專案管理目錄 /google-cloud-sd

DNS Resource Record (RR) « 關於網路那些...

DNS Server 負責處理 DNS 相關服務 Zone File 每一個域名都會有相對應的檔案,稱為區域檔案(Zone File),每一個 Zone File 都

repository 上手 « 關於網路那些...

安裝 composer require prettus/l5-repository 設定 ServiceProvider 如果是 >= laravel5