SlideShare a Scribd company logo
1 of 9
Download to read offline
페이지 1 / 9
작성자 : 이 종 철
탑크리에듀 교육센터(www.topcredu.co.kr)
자마린 크로스플랫폼 앱개발
Xamarin.Forms 에서 자바, 스프링
프레임워크(스프링부트)쪽 웹서비스
를 호출하여 응답을 받아 휴대폰 화
면에 출력하는 실습
- Spring Boot를 이용하여 RestController 작성
- Xamarin.Forms에서 HttpClient를 사용하여 요청,
응답을 처리하며 휴대폰 화면에 표시
페이지 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 / 9
 다음 화면에서 Web >> Web 선택 후 Finish 클릭
페이지 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 / 9
}
}
 실행 후 브러우저에서 확인
 비주얼 스튜디오 2017 커뮤니티에서 Xamarin.Forms 크로스 플랫폼 앱, PCL 프로젝트를 생성
하자.
 Xamarin.Forms에서 HttpClient를 사용할 예정인데 직접 다룰 수 는 없으므로
“Microsoft.Net.Http” Nuget 패키지를 추가해야 한다. “Microsoft.Net.Http”를 포함시키기 위해
솔루션 >> 우측마우스 >> 솔루션용 NuGet 패키지 관리에서 “Microsoft.Bcl.Build"”를 추
가한다.
페이지 6 / 9
 솔루션 >> 우측마우스 >> 솔루션용 NuGet 패키지 관리에서 “Microsoft.Net.Http"”를 추가
한다.
 안드로이드 플랫폼에서 테스트를 위해 안드로이드쪽 프로젝트에서 Properties를 더블클릭 하
여 “Android 매니페스트옵션” >> “필수권한”에서 “ACCESS_NETWORK_STATE”, “INTERNET” 권한
을 체크하자.
페이지 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 / 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

More Related Content

More from 탑크리에듀(구로디지털단지역3번출구 2분거리)

[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
 
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
 
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
 
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
2. xamarin.android 2.5 xamarin.android(with .jar, .aar, native android librar...
 
2. xamarin.android 2.3 hello android multi screen example part2
2. xamarin.android 2.3 hello android multi screen example part22. xamarin.android 2.3 hello android multi screen example part2
2. xamarin.android 2.3 hello android multi screen example part2
 
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
 
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.7 simple intent example(현...
 
2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...
2. xamarin.android 2.2 hello xamarin android 구조 2.2.6 simple intent example(웹...
 

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

  • 1. 페이지 1 / 9 작성자 : 이 종 철 탑크리에듀 교육센터(www.topcredu.co.kr) 자마린 크로스플랫폼 앱개발 Xamarin.Forms 에서 자바, 스프링 프레임워크(스프링부트)쪽 웹서비스 를 호출하여 응답을 받아 휴대폰 화 면에 출력하는 실습 - Spring Boot를 이용하여 RestController 작성 - Xamarin.Forms에서 HttpClient를 사용하여 요청, 응답을 처리하며 휴대폰 화면에 표시
  • 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 / 9  다음 화면에서 Web >> Web 선택 후 Finish 클릭
  • 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 / 9 } }  실행 후 브러우저에서 확인  비주얼 스튜디오 2017 커뮤니티에서 Xamarin.Forms 크로스 플랫폼 앱, PCL 프로젝트를 생성 하자.  Xamarin.Forms에서 HttpClient를 사용할 예정인데 직접 다룰 수 는 없으므로 “Microsoft.Net.Http” Nuget 패키지를 추가해야 한다. “Microsoft.Net.Http”를 포함시키기 위해 솔루션 >> 우측마우스 >> 솔루션용 NuGet 패키지 관리에서 “Microsoft.Bcl.Build"”를 추 가한다.
  • 6. 페이지 6 / 9  솔루션 >> 우측마우스 >> 솔루션용 NuGet 패키지 관리에서 “Microsoft.Net.Http"”를 추가 한다.  안드로이드 플랫폼에서 테스트를 위해 안드로이드쪽 프로젝트에서 Properties를 더블클릭 하 여 “Android 매니페스트옵션” >> “필수권한”에서 “ACCESS_NETWORK_STATE”, “INTERNET” 권한 을 체크하자.
  • 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 / 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"); } } } }  실행화면