如何在Android中實(shí)現(xiàn)一個(gè)簡易的Http服務(wù)器
最近遇到一個(gè)需求需要在App中創(chuàng)建一個(gè)Http服務(wù)器供供瀏覽器調(diào)用,用了下開源的微型Htpp服務(wù)器框架:NanoHttpd,項(xiàng)目地址:https://github.com/NanoHttpd/nanohttpd
直接上代碼
public class HttpServer extends NanoHTTPD {
public HttpServer(int port) {
super(port);
}
@Override
public Response serve(IHTTPSession session) {
HashMap<String, String> files = new HashMap<>();
Method method = session.getMethod();
if (Method.POST.equals(method)) {
try {
//notice:If the post with body data, it needs parses the body,or it can't get the body data;
session.parseBody(files);
}catch (IOException e) {
return newFixedLengthResponse(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT,
"SERVER INTERNAL ERROR: IOException: " + e.getMessage());
}catch (ResponseException e) {
return newFixedLengthResponse(e.getStatus(), MIME_PLAINTEXT, e.getMessage());
}
}
final String postData = files.get("postData");
String transJson = Transmit.getInstance().getAuthoriseData(postData);
return newFixedLengthResponse(transJson);
}
使用起來可以說是很簡單了,session參數(shù)包含了請(qǐng)求的各種信息,這里顯示獲取了請(qǐng)求方法,因?yàn)槲覀兊捻?xiàng)目中暫時(shí)只用post(demo),所以只針對(duì)post請(qǐng)求做了處理,get的處理會(huì)更簡單。因?yàn)閜ost請(qǐng)求中帶有body,所以需要先聲明一個(gè)HashMap,將body中的鍵值對(duì)取出來。這里我們把請(qǐng)求過來的json數(shù)據(jù)映射到了"postData",然后從通過"
final String postData = files.get("postData");
這行代碼將其取出來.session還有g(shù)etParams(),getCookies(),getHeaders()等方法,看名字就可以知道功能了。至此一個(gè)簡單的Http服務(wù)器就出來了,通常把它放在一個(gè)service中等待請(qǐng)求。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java下載https文件并上傳阿里云oss服務(wù)器
- 如何使用HttpClient發(fā)送java對(duì)象到服務(wù)器
- java Socket實(shí)現(xiàn)簡單模擬HTTP服務(wù)器
- Java使用NioSocket手動(dòng)實(shí)現(xiàn)HTTP服務(wù)器
- java編寫Http服務(wù)器下載工具
- java實(shí)現(xiàn)輕量型http代理服務(wù)器示例
- Android使用OKHttp庫實(shí)現(xiàn)視頻文件的上傳到服務(wù)器功能
- android 開發(fā)中使用okhttp上傳文件到服務(wù)器
- Android中實(shí)現(xiàn)OkHttp上傳文件到服務(wù)器并帶進(jìn)度
- Java/Android 實(shí)現(xiàn)簡單的HTTP服務(wù)器
相關(guān)文章
Android廣播實(shí)現(xiàn)App開機(jī)自啟動(dòng)
這篇文章主要為大家詳細(xì)介紹了Android廣播實(shí)現(xiàn)App開機(jī)自啟動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
靈活使用Android中ActionBar和ViewPager切換頁面
這篇文章主要介紹了如何靈活使用Android中ActionBar和ViewPager切換頁面,感興趣的小伙伴們可以參考一下2015-12-12
Kotlin實(shí)用語法糖空安全類型轉(zhuǎn)換及相等性判斷
這篇文章主要為大家介紹了Kotlin實(shí)用語法糖空安全類型轉(zhuǎn)換及相等性判斷示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Android音視頻開發(fā)之VideoView使用指南
VideoView組件內(nèi)部同樣是使用MediaPlayer+SurfaceView的形式控制MediaPlayer對(duì)視頻文件進(jìn)行播放,本文就來詳細(xì)講講它的使用方法,需要的可以參考一下2022-04-04
Android實(shí)現(xiàn)機(jī)房座位預(yù)約系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)機(jī)房座位預(yù)約系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Kotlin 集合函數(shù)map 和 first 的使用場(chǎng)景分析
Kotlin 提供了許多強(qiáng)大的集合操作函數(shù),其中 map 適用于轉(zhuǎn)換集合,first 適用于獲取符合條件的第一個(gè)元素,這篇文章給大家介紹Kotlin 集合函數(shù):map 和 first 的使用場(chǎng)景,感興趣的朋友一起看看吧2025-04-04
Android Fragment中使用SurfaceView切換時(shí)閃一下黑屏的解決辦法
本篇文章主要給大家分享Android Fragment中使用SurfaceView切換時(shí)閃一下黑屏的解決辦法,需要的朋友可以參考下2015-09-09

