2013-07-31 98 views
2

我想在我的android應用程序中嵌入一個網絡服務器,其中連接到它的設備將具有兩種功能。一個是發送一個xml文件,我可以解析並做一些事情,另一個可以從我的SD卡上下載文件。Android嵌入式網絡服務器

我發現nanoHTTPD和AndroidHTTPD等,但沒有很好的文檔,我面臨的問題,特別是如何賦予下載文件的能力。除了上面提到的那些之外,是否有任何好的教程/示例處理文件或易於使用的庫?

回答

3

想到兩件事情,兩者都與權限有關。在您的Android清單看一看,你會希望你的應用程序

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

INTERNET兩種權限,因爲你所訪問的網絡服務,並WRITE_EXTERNAL_STORAGE因爲當NanoHttpd接收寫入臨時文件傳入的連接和最/所有手機都將「java.io.tmpdir」映射到SD卡上。

創建一個擴展基本NanoHttpd的類,傳遞要運行的套接字,然後實現抽象的'serve()'方法。

當您的客戶端應用程序上傳他們的XML文件時,請確保它以標準的Multipart表單編碼發送,並且文件名將在「files」映射參數中發送給serve()。

當您向客戶端發送響應時,新建一個Response()對象,您可以將其傳遞給InputStream(來自SD卡文件),也可以僅傳遞內容的字符串。

如果您需要文檔,以示例的形式,NanoHttpd包含一個功能齊全的網絡服務器,用於提供文件,以及我稱之爲「DemoServer」,它非常適合調試客戶端應用程序發送的內容。還沒有任何Android的具體例子,但問題的數量表明我應該增加一些。 :)

謝謝。希望這可以幫助。如果您有更多問題,請告訴我。

+0

我已經爲應用程序的其他部分設置了權限,因爲我需要它們。你能告訴我在哪裏可以找到DemoServer例子嗎?謝謝。 – Panos

+0

查看「samples」目錄下的內容,一旦你挖掘完目錄的類路徑,你將最終找到它。在線查看代碼:https://github.com/NanoHttpd/nanohttpd/blob/master/samples/src/main/java/fi/iki/elonen/DebugServer.java –