[Android]NanoHTTPDを使用してAndroidアプリケーションでWebサーバを実装
アプリケーションでWebサーバを実現できる!
NanoHTTPDとは?
Javaを使用するプラットフォーム上でHTTPサーバのオープンソースライブラリを作成できます.
NanoHTTPDの原理は?
要求をJavaのServerSocketとして受け入れ、1つのSocketにスレッドを作成することによって処理されます.AndroidもJavaを使用するため、NanoHTTPDを使用してアプリケーションでWebサーバを実現できます.
実施方法
1-1. クラスの作成
まず、NanoHTTPDを拡張するWebサーバクラスを作成し、ログで使用するTAGとPortを定数として宣言します.
public class WebServer extends NanoHTTPD {
private static final String TAG = WebServer.class.getSimpleName(); // 로그에 사용할 TAG
private static final int PORT = 8080; // 포트번호
}
1-1. モノトーンオブジェクトの作成
次に、
getServer()
関数を作成して、ジェネレータおよびWebサーバオブジェクトをインポートします.モノトーンモードで実施する.private WebServer() throws IOException {
super(PORT);
}
public static WebServer getServer() throws IOException {
if(server == null){
server = new WebServer();
}
return server;
}
2.クライアント要求処理関数の実現
次に、クライアント要求の
serve()
関数の上書きを受信します.このセクションでは、クライアントのリクエストを受信して処理し、応答をクライアントに返します.
@Override
public Response serve(IHTTPSession session) {
Map<String, String> headers = session.getHeaders(); // 세션의 헤더
Method method = session.getMethod(); // 세션의 메소드
String uri = session.getUri(); // 세션의 Uri
Map<String, List<String>> decodedQueryParameters = decodeParameters(session.getQueryParameterString());
}
以上、IHTTPSession session
をパラメータとして受信し、HttpセッションのHeader、Method、およびUriを含む.✔decodeQueryParametersにはヘッダーのタグが含まれています.
以前に作成したRestAPIを表示すると、クライアントがどのように要求を発行しているかがわかります.
Retrofit 2で作成されたインタフェースの例は、次のとおりです.
@POST("posts/post")
POST
がこれに対応している."posts/post"
がこれに対応している.📌方法が
POST
である場合、Bodyはグループ化されなければならない.Map<String, String> map = new HashMap<String, String>(); // Body를 넣을 Map 선언
session.parseBody(map); // 세션의 Body를 map에 파싱
Mapは前述のBodyを含むように宣言され、session.parseBody(map);
関数に分類される.3.クライアントへの応答の実装
応答は、クライアント要求の成功と失敗(失敗した場合、複数のエラーメッセージが処理される)の結果に基づいて返信されるオブジェクトです.
実施方法は以下のとおりである.
成功時
return newFixedLengthResponse(Response.Status.OK, "application/json", "정상적으로 처리 되었습니다.");
Response.Status.OK
は、サーバが送信するメッセージ、コード200である.失敗した場合
return newFixedLengthResponse(Response.Status.BAD_REQUEST, "application/json", "잘못된 요청입니다.");
このときResponse.Status.BAD_REQUEST
は、コード400というよく見られる情報です.これにより、
Response.Status.
は、多くのサーバリースコードを実現する.状況に応じてエラー処理や成功処理を実行できます.
これによりNanoHTTPDはAndroidアプリケーションでサーバを実現できます!😲👍
今回はNanoHTTPDを勉強しているうちにHTTPサーバに関する知識をたくさん得ました
Reference
NanoHTTPD羽状ハブ
Reference
この問題について([Android]NanoHTTPDを使用してAndroidアプリケーションでWebサーバを実装), 我々は、より多くの情報をここで見つけました https://velog.io/@plz_no_anr/Android-NanoHTTPD로-앱에서-웹서버-구현하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol