자바, 스프링 프레임워크(스프링부트) 기반으로 간단히 레스트컨트롤러(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 메소드로 응답을 문자열로 읽어서 휴대폰 화면에 출력한다.
(자마린교육/자마린강좌)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(스프링 부트)를 선택
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");
}
}
}
}
실행화면