반응형
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 안드로이드와 Vert.x HttpServer 의 HTTP 통신에 대해 공부합니다.
안드로이드 HTTP 라이브러리 : Volley
JAVA HTTP SERVER 라이브러리 : Vert.x ( Core, Web, Unit )
1. 안드로이드 프로젝트 만들고 INTERNET PERMISSION 추가,
VOLLEY 라이브러리 종속성 추가
1 2 3 4 5 6 7 8 9 | <?xml version="1.0" encoding="utf-8"?> <manifest ...> <uses-permission android:name="android.permission.INTERNET"/> <application....> </application> </manifest> | cs |
1 2 3 4 5 6 7 | dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) ....... implementation 'com.android.volley:volley:1.1.0' } | cs |
String Request 클래스 사용하여 HTTP Request
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | public class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button btn = findViewById(R.id.btn); final RequestQueue queue = Volley.newRequestQueue(this); final String url = "http://10.20.2.119:9292"; btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { StringRequest request = new StringRequest(Request.Method.POST, url, //요청 성공 시 new Response.Listener<String>() { @Override public void onResponse(String response) { Log.d("result", "[" + response + "]"); } }, // 에러 발생 시 new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d("error", "" + error.getMessage() + ""); } }) { //요청보낼 때 추가로 파라미터가 필요할 경우 //url?a=xxx 이런식으로 보내는 대신에 아래처럼 가능. @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> params = new HashMap<>(); params.put("id", "name"); params.put("id2", "name2"); Log.d("param", params.toString()); return params; } }; queue.add(request); } catch (Exception e) { e.printStackTrace(); } } }); } } | cs |
2. 이클립스 메이븐프로젝트 만들기
메이븐 프로젝트를 생성한 후에 pom.xml 파일의 <dependencies></...> 안에
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <!-- https://mvnrepository.com/artifact/io.vertx/vertx-core --> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-core</artifactId> <version>3.5.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.vertx/vertx-unit --> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-unit</artifactId> <version>3.5.2</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/io.vertx/vertx-web --> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-web</artifactId> <version>3.5.2</version> </dependency> | cs |
위 세 가지를 추가해줍니다.
AbstractVerticle 클래스를 상속 받는 main() 메소드를 포함한 클래스를 만들어 줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public class HttpServer extends AbstractVerticle { @Override public void start() { Router router = Router.router(Vertx.vertx()); router.post().handler(BodyHandler.create()); router.route().handler(rc -> { String path = rc.request().path(); MultiMap map = rc.request().params(); HttpServerResponse res = rc.response(); String id = map.get("id"); JsonObject json = new JsonObject().put("code", "000").put("id", id); res.putHeader("content-type", "text/plain").end(json.toString()); }); Vertx.vertx().createHttpServer().requestHandler(router::accept).listen(9292); } public static void main(String[] args) throws Exception { HttpServer server = new HttpServer(); server.start(); } } | cs |
위 코드들을 가지고 테스트 해보시면 금방 이해가 되실 거에요.
이상입니다.
감사합니다.
궁금하시거나 이해 안되는 부분들은 댓글 달아주시면 답변 드리겠습니다.
반응형
'안드로이드' 카테고리의 다른 글
안드로이드 파이어베이스 클라우드 파이어 스토어(Cloud FireStore 예제! (0) | 2018.07.13 |
---|---|
안드로이드 Error:Cannot fit requested classes in a single dex file. Try supplying a main-dex list. # methods: 74362 > 65536 해결방법 (0) | 2018.07.11 |
안드로이드 코드로 화면 밝기 조절하기, Android control screen brightness with java,kotlin code (0) | 2018.06.25 |
안드로이드 코틀린으로 간단한 메모 앱 만들기 (0) | 2018.05.30 |
안드로이드 Logcat을 이용해서 로그를 찍어보기! Log 클래스 (0) | 2018.05.17 |