Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

(자마린교육/자마린강좌)Xamarin.Forms 에서 자바, 스프링 프레임워크(스프링부트)쪽 웹서비스를 호출하여 응답을 받아 휴대폰 화면에 출력하는 실습_자마린실무교육

522 views

Published on

자바, 스프링 프레임워크(스프링부트) 기반으로 간단히 레스트컨트롤러(RestController)를 만들어 요청을 처리할 hello() 메소드를 만들고 브라우저(실습 노트북의 사설 IP는 192.168.0.189, http://192.168.10.189:8080/hello?name=홍길동) 에서 먼저 테스트를 한다. 이것이 확인 되면 Xamarin.Forms로 앱을 만들어 안드로이드 폰(또는 에뮬레이터)을 통해 웹서비스를 호출하는 예제 실습이다.
 휴대폰의 네트워크는 실습을 위해 웹서비스를 실행하는 노트북과 같은 네트워크로 되는 것이 편해서 Wifi로 설정하고, 실제 휴대폰에서 테스트 하면 노트북에서 실행중인 스프링 기반 웹서비스를 호출할 수 있다.
 HttpClient는 Http를 통해 요청을 주고 받을 수 있는 기능을 제공한다. 즉 URL로 제공되는 리소스로 HTTP 요청을 보내고 HTTP 응답을 수신하는 기능을 제공한다. 본 예제에서는 HttpClient를 이용하여 요청을 보내고 ReadAsStringAsync 메소드로 응답을 문자열로 읽어서 휴대폰 화면에 출력한다.

Published in: Education
  • Be the first to comment

  • Be the first to like this

(자마린교육/자마린강좌)Xamarin.Forms 에서 자바, 스프링 프레임워크(스프링부트)쪽 웹서비스를 호출하여 응답을 받아 휴대폰 화면에 출력하는 실습_자마린실무교육

  1. 1. 페이지 1 / 9 작성자 : 이 종 철 탑크리에듀 교육센터(www.topcredu.co.kr) 자마린 크로스플랫폼 앱개발 Xamarin.Forms 에서 자바, 스프링 프레임워크(스프링부트)쪽 웹서비스 를 호출하여 응답을 받아 휴대폰 화 면에 출력하는 실습 - Spring Boot를 이용하여 RestController 작성 - Xamarin.Forms에서 HttpClient를 사용하여 요청, 응답을 처리하며 휴대폰 화면에 표시
  2. 2. 페이지 2 / 9 5.2 Xamarin.Forms 안드로이드에서 자바기반 스프링 프레임워크(스프링 부트)로 작성한 웹서비스 호출 실습.  자바, 스프링 프레임워크(스프링부트) 기반으로 간단히 레스트컨트롤러(RestController)를 만들 어 요청을 처리할 hello() 메소드를 만들고 브라우저(실습 노트북의 사설 IP는 192.168.0.189, http://192.168.10.189:8080/hello?name=홍길동) 에서 먼저 테스트를 한다. 이것이 확인 되면 Xamarin.Forms로 앱을 만들어 안드로이드 폰(또는 에뮬레이터)을 통해 웹서비스를 호출하는 예제 실습이다.  휴대폰의 네트워크는 실습을 위해 웹서비스를 실행하는 노트북과 같은 네트워크로 되는 것이 편해서 Wifi로 설정하고, 실제 휴대폰에서 테스트 하면 노트북에서 실행중인 스프링 기반 웹 서비스를 호출할 수 있다.  HttpClient는 Http를 통해 요청을 주고 받을 수 있는 기능을 제공한다. 즉 URL로 제공되는 리 소스로 HTTP 요청을 보내고 HTTP 응답을 수신하는 기능을 제공한다. 본 예제에서는 HttpClient를 이용하여 요청을 보내고 ReadAsStringAsync 메소드로 응답을 문자열로 읽어서 휴대폰 화면에 출력한다.  STS 또는 이클립스에서 Spring MVC Rest 형식으로 간단히 스프링 컨트롤러를 만들자.  STS를 오픈하여 File >> New >> Project >> Spring Stater Project(스프링 부트)를 선택
  3. 3. 페이지 3 / 9  다음 화면에서 Web >> Web 선택 후 Finish 클릭
  4. 4. 페이지 4 / 9  com.example.demo 패키지에서 스프링 컨트롤러를 작성하자.  [HelloController.java] package com.example.demo; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping("/hello") public String hello(@RequestParam(value="name", defaultValue="World!") String name) { return "Hello~ " + name;
  5. 5. 페이지 5 / 9 } }  실행 후 브러우저에서 확인  비주얼 스튜디오 2017 커뮤니티에서 Xamarin.Forms 크로스 플랫폼 앱, PCL 프로젝트를 생성 하자.  Xamarin.Forms에서 HttpClient를 사용할 예정인데 직접 다룰 수 는 없으므로 “Microsoft.Net.Http” Nuget 패키지를 추가해야 한다. “Microsoft.Net.Http”를 포함시키기 위해 솔루션 >> 우측마우스 >> 솔루션용 NuGet 패키지 관리에서 “Microsoft.Bcl.Build"”를 추 가한다.
  6. 6. 페이지 6 / 9  솔루션 >> 우측마우스 >> 솔루션용 NuGet 패키지 관리에서 “Microsoft.Net.Http"”를 추가 한다.  안드로이드 플랫폼에서 테스트를 위해 안드로이드쪽 프로젝트에서 Properties를 더블클릭 하 여 “Android 매니페스트옵션” >> “필수권한”에서 “ACCESS_NETWORK_STATE”, “INTERNET” 권한 을 체크하자.
  7. 7. 페이지 7 / 9  휴대폰쪽의 UI를 작성하자. [MainPage.xaml] <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:WebServiceTest" x:Class="WebServiceTest.MainPage"> <StackLayout> <Label Text="이름을 입력하세요?"/> <Entry x:Name="txtName" Text=""/> <Button x:Name="button1" Text="스프링 웹서비스 호출하기" Clicked="Button1_Click"/> <Label x:Name="label1"/> </StackLayout> </ContentPage>  버튼클릭 이벤트에서 자바, 스프링쪽의 웹서비를 호출하고 결과를 받는 로직을 추가하자.  [MainPage.xaml.cs] using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using Xamarin.Forms;
  8. 8. 페이지 8 / 9 namespace WebServiceTest { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } private async void Button1_Click(object sender, EventArgs e) { var client = new System.Net.Http.HttpClient(); var response = await client.GetAsync("http://192.168.0.189:8080/hello?name=" + txtName.Text); string helloString = await response.Content.ReadAsStringAsync(); if (helloString != "") { label1.Text = helloString; } else { await DisplayAlert("경고", "데이터가 없습니다.", "OK"); } } } }  실행화면
  9. 9. 페이지 9 / 9

×