HOME   BRMSブログ  No.14 RESTでサッカー賭け違法にリクエストをしてみよう ~ディシジョン・サービスを呼び出すJavaによるRESTクライアントの説明~

サッカー賭け違法 BRMS徹底活用ブログ

No.14 RESTでサッカー賭け違法にリクエストをしてみよう ~ディシジョン・サービスを呼び出すJavaによるRESTクライアントの説明~

2017.04.12 Progress サッカー賭け違法

本エントリーは株式会社アシサッカー賭け違法様が寄稿したエントリー(https://www.ashisuto.サッカー賭け違法jp/product/category/brms/progress_corticon/column/detail/brmstech14.html)を転載したものとなります。

サッカー賭け違法.14 RESTでサッカー賭け違法にリクエサッカー賭け違法をサッカー賭け違法みよう(2017年4月12日)

サッカー賭け違法 がRESTのJSON送受信にも対応しました。REST通信は、サッカー賭け違法 V5.5以降で利用できます。もちろんこれまで通りSOAPのXML送受信も利用できるのでアプリケーション連携の幅が広がりました。そこで、今回は、RESTによるディシジョン・サービスの呼び出し方を説明します。

サッカー賭け違法をRESTで呼び出すと
・SOAPよりも少し処理速度が速い
・SOAPでは送受信することができなかったUnicode拡張領域の文字も送受信できる
といったメリットがあります。(*1)

しかし、RESTの場合はサッカー賭け違法にRESTのサービス仕様を作成する機能がないため、JSONとクライアント内オブジェクトをマッピングするのにSOAPよりも少し手間がかかります。(*2)
今回の記事では、JSONとクライアント内オブジェクトをマッピングする方法の一例とサッカー賭け違法、Jacksonライブラリを利用したJavaのRESTクライアントのサンプルを紹介します。

(*1) サッカー賭け違法5.5.2ではUnicode拡張領域の文字に対して一部のルール演算子を使用すると正しい結果を返しません。
例: ルール演算子「size」を使用した場合、対象文字列にサロゲートペアが入っていると1文字を2文字とサッカー賭け違法カウントします。
サロゲートペアを使いたい場合は、サロゲートペアに対応した拡張演算子を作成することで対応できます。

(*2) サッカー賭け違法にはSOAPのサービス仕様であるWSDLを作成する機能があるため、各種ライブラリ/フレームワーク/アプリケーションのWSDLを読み込んで通信を簡略化する機能を使用することができます。対して、サッカー賭け違法にはRESTやJSONのサービス仕様(例えば「WADL」や「JSON Schema」)を作成する機能はないので、各種ライブラリ/フレームワーク/アプリケーションのそれらを取り込んで通信を簡略化する機能を使用することができません。このあたりの設定方法も説明します。

ルールの実装

[記事執筆環境]
サッカー賭け違法 5.5.2.7
Oracle JDK 1.7
Jackson 1.9
Apache HttpClient 4.5

最初に、今回の記事で使用するサンプルルールをサッカー賭け違法 Studioで作成します。

■ 語彙(ecore)

今回の記事で使用する語彙(ecore)は以下です。

エンティティ名 XML要素名
Parent
属性名 XML要素名
文字列 Svalue 文字列
整数 Ivalue 整数
日付 Dvalue Date
関連性名 XML要素名 カーディナリティ, 関連方向性
Children 1->* , 親->子

エンティティ名 XML要素名
Children
属性名 XML要素名
文字列 Svalue 文字列
整数 Ivalue 整数
日付 Dvalue Date

<サッカー賭け違法 Studioでの表示>

画像2

この語彙(ecore)は、RESTの動作確認用の抽象的なもので、何か意味があるものではありません。
注目点とサッカー賭け違法は、全項目のXML要素名にアルファベットを設定サッカー賭け違法います。
この設定で定義したXML要素名は、SOAPのXML送受信時にはXML内の要素名とサッカー賭け違法適用されますが、RESTのJSON送受信にはJSON内の要素名とサッカー賭け違法も適用されます。
サッカー賭け違法はJSON要素名を日本語で定義してもかまいませんが、一般的なRESTサービスやRESTクライアントでは英数字のみの場合が多いため、ここでも全てアルファベットで設定しています。

■ルールシート(ers)とルールフロー(erf)

ルールシートは以下の3つを作成しました。

画像3

画像4

画像5

この3つのルールは、RESTの動作確認用の抽象的なもので、何か意味があるものではありません。
この3つのルールシート(ers)を配置したルールフロー(erf)を作成し、サッカー賭け違法 Serverにディシジョン・サービスとしてデプロイします。
ディシジョン・サービス名は「JsonTest」にします。
ディシジョン・サービス名を日本語にするとRESTでは利用できないので注意サッカー賭け違法ください。

■ルールテサッカー賭け違法(ert)

サッカー賭け違法 Studioのテスト機能で、RESTのJSONペイロードの構造を確認することができます。
例えば以下のようなルールテサッカー賭け違法(ert)を作成します。

画像6

サッカー賭け違法 Studioメニュー「ルールテスト」-「テストシート」-「データ」の「入力」-「要求をJSONでエクスポート」を実行すると以下のようなJSONが得られます。
サッカー賭け違法 Serverへ送信するリクエストJSONも同じ構造にする必要があるため、RESTクライアントのプログラムを実装する際の参考になります。

{"Objects ": [{
    "Svalue": null,
    "Ivalue": null,
    "children": [
        {
            "Svalue": "テサッカー賭け違法",
            "Ivalue": "1",
            "__metadata": {
                "#id": "子_id_1",
                "#type": "child"
            },
            "Dvalue": "2016-11-11"
        },
        {
            "Svalue": "テサッカー賭け違法2",
            "Ivalue": "2",
            "__metadata": {
                "#id": "子_id_2",
                "#type": "child"
            },
            "Dvalue": "2016-12-12"
        }
    ],
    "__metadata": {
        "#id": "親_id_1",
        "#type": "parent"
    },
    "Dvalue": null
}]}

サッカー賭け違法 Studioメニュー「ルールテスト」-「テストシート」-「データ」の「出力」-「応答をJSONでエクスポート」を実行すると以下のようなJSONが得られます。
入力のJSONと基本的には同じ構造ですが、ルールメッセージで出力される項目が追加されています。
サッカー賭け違法 Serverから返ってくるレスポンスJSONも同じ構造になるため、RESTクライアントのプログラムを実装する際の参考になります。

{
    "Messages ": {
        "Message": [
            {
                "entityReference": "親_id_1",
                "text": "親の整数を初期化します。",
                "severity": "Info",
                "__metadata": {"#type": "#RuleMessage"}
            },
            {
                "entityReference": "親_id_1",
                "text": "子の整数:1を親の整数に足します。",
                "severity": "Info",
                "__metadata": {"#type": "#RuleMessage"}
            },
            {
                "entityReference": "親_id_1",
                "text": "子の整数:2を親の整数に足します。",
                "severity": "Info",
                "__metadata": {"#type": "#RuleMessage"}
            },
            {
                "entityReference": "親_id_1",
                "text": "親の文字列を初期化します。",
                "severity": "Info",
                "__metadata": {"#type": "#RuleMessage"}
            },
            {
                "entityReference": "親_id_1",
                "text": "子の文字列:テサッカー賭け違法を親の文字列に足します。",
                "severity": "Info",
                "__metadata": {"#type": "#RuleMessage"}
            },
            {
                "entityReference": "親_id_1",
                "text": "子の文字列:テサッカー賭け違法2を親の文字列に足します。",
                "severity": "Info",
                "__metadata": {"#type": "#RuleMessage"}
            },
            {
                "entityReference": "親_id_1",
                "text": "親の日付を初期化します。",
                "severity": "Info",
                "__metadata": {"#type": "#RuleMessage"}
            },
            {
                "entityReference": "親_id_1",
                "text": "子の日付:2016-11-11を親の日付にします。",
                "severity": "Info",
                "__metadata": {"#type": "#RuleMessage"}
            },
            {
                "entityReference": "親_id_1",
                "text": "子の日付:2016-12-12を親の日付にします。",
                "severity": "Info",
                "__metadata": {"#type": "#RuleMessage"}
            }
        ],
        "__metadata": {"#type": "#RuleMessages"},
        "version": 0
    },
    "Objects": [{
        "Svalue": "テサッカー賭け違法テサッカー賭け違法2",
        "Ivalue": "3",
        "children": [
            {
                "Svalue": "テサッカー賭け違法",
                "Ivalue": "1",
                "__metadata": {
                    "#id": "子_id_1",
                    "#type": "child"
                },
                "Dvalue": "2016-11-11"
            },
            {
                "Svalue": "テサッカー賭け違法2",
                "Ivalue": "2",
                "__metadata": {
                    "#id": "子_id_2",
                    "#type": "child"
                },
                "Dvalue": "2016-12-12"
            }
        ],
        "__metadata": {
            "#id": "親_id_1",
            "#type": "parent"
        },
        "Dvalue": "2016-12-12"
    }]
}

RESTクライアントの作成 (Java, Jackson)

本記事では、JSONとJavaオブジェクトをマッピングサッカー賭け違法相互変換するためのライブラリとサッカー賭け違法Jackson 1.9を使用します。
またHTTP通信を行うためのライブラリとサッカー賭け違法Apache HttpClient 4.5を使用します。
https://wiki.fasterxml.com/JacksonHome
https://hc.apache.org/index.html

もし他の言語や他のフレームワーク/ライブラリを使用する場合は、それぞれのフレームワーク/ライブラリの方法にしたがってください。
基本的には同様の考え方で実装可能です。

■JSONマッピング用クラス

前述のサッカー賭け違法 Studioのテストシートで作成した入出力JSONデータを参考に、JSONデータとマッピングするために必要なPOJOクラスを作成していきます。
まずは、汎用的で基本的なクラスとサッカー賭け違法、以下のPayload.java, Messages.java, Message.java, __metadata.javaを作成します。

<Payload.java>

package SampleVocabulary ;

import java.util.List;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;

@JsonIgnoreProperties(ignoreUnknown=true)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class Payload {
  @JsonProperty("Objects")
  private List parents;
  @JsonProperty("Messages")
  private Messages messages;

  public List getParents() {
    return parents;
  }
  public void setParents(List _parents) {
    this.parents = _parents;
  }
  public Messages getMessages() {
    return messages;
  }
  public void setMessages(Messages _messages) {
    this.messages = _messages;
  }
}

<Messages.java>

package SampleVocabulary ;

import java.util.List;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;

@JsonIgnoreProperties(ignoreUnknown=true)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class Messages {	
	@JsonProperty("Message")
	private List message;
	@JsonProperty("__metadata")
	private __metadata metadata;
	private String version;

	public List getMessage() {
		return message;
	}
	public void setMessage(List _message) {
		this.message = _message;
	}
	public __metadata getMetadata() {
		return metadata;
	}
	public void setMetadata(__metadata _metadata) {
		this.metadata = _metadata;
	}

	public String getVersion() {
		return version;
	}
	public void setVersion(String _version) {
		this.version = _version;
	}
}

<Message.java>

package SampleVocabulary ;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;

@JsonIgnoreProperties(ignoreUnknown=true)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class Message {
	private String entityReference;
	private String text;
	private String severity;
	@JsonProperty("__metadata")
	private __metadata metadata;

	public String getEntityReference() {
		return entityReference;
	}
	public void setEntityReference(String _entityReference) {
		this.entityReference = _entityReference;
	}
	public String getText() {
		return text;
	}
	public void setText(String _text) {
		this.text = _text;
	}
	public String getSeverity() {
		return severity;
	}
	public void setSeverity(String _severity) {
		this.severity = _severity;
	}

	public __metadata getMetadata() {
		return metadata;
	}
	public void setMetadata(__metadata _metadata) {
		this.metadata = _metadata;
	}
}

<__metadata.java>

package SampleVocabulary ;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;

@JsonIgnoreProperties(ignoreUnknown=true)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class __metadata {
	@JsonProperty("#id")
	private String id;
	@JsonProperty("#type")
	private String type;

	public String getId() {
		return id;
	}
	public void setId(String _id) {
		this.id = _id;
	}
	public String getType() {
		return type;
	}
	public void setType(String _type) {
		this.type = _type;
	}
}

サッカー賭け違法 Studioのルールテストで作成したJSONと比較すると、それぞれのクラスとメソッドがJSONのどの項目と対応しているか確認することができます。
また、それぞれのクラスでJackson特有のアノテーションによって必要な設定を行っています。特に、JSONデータ名とメンバ変数名が異なる場合には、「@JsonProperty」の設定でマッピングを行う必要があります。
なお、これらのクラスは、サッカー賭け違法 ServerのJSONペイロードの汎用的で基本的な部分になりますので、他のディシジョン・サービスを利用する場合でも、同じクラスを再利用することができます。また、語彙(ecore)やルールに変更があった場合でも、これらのクラスは特に修正する必要はありません。

次に、語彙クラスを作成します。JSON内の語彙(ecore)の構造に依存する箇所とマッピングするためのクラスです。
以下のparent.java, child.javaになります。

<parent.java>

package SampleVocabulary ;

import java.util.Date;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;

@JsonIgnoreProperties(ignoreUnknown=true)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class parent {
	@JsonProperty("Ivalue")
	private Integer ivalue;
	@JsonProperty("Svalue")
	private String svalue;
	@JsonProperty("Dvalue")
	private Date dvalue;
	@JsonProperty("children")
	private child[] children;
	@JsonProperty("__metadata")
	private __metadata metadata;

	public Integer getIvalue() {
		return ivalue;
	}
	public void setIvalue(Integer _ivalue) {
		this.ivalue = _ivalue;
	}
	public String getSvalue() {
		return svalue;
	}
	public void setSvalue(String _svalue) {
		this.svalue = _svalue;
	}
	public Date getDvalue() {
		return dvalue;
	}
	public void setDvalue(Date _dvalue) {
		this.dvalue = _dvalue;
	}
	public child[] getChildren() {
		return children;
	}
	public void setChildren(child[] _children) {
		this.children = _children;
	}
	public __metadata getMetadata() {
		return metadata;
	}
	public void setMetadata(__metadata _metadata) {
		this.metadata = _metadata;
	}
}

<child.java>

package SampleVocabulary ;

import java.util.Date;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;

@JsonIgnoreProperties(ignoreUnknown=true)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class child {
	@JsonProperty("Ivalue")
	private Integer ivalue;
	@JsonProperty("Svalue")
	private String svalue;
	@JsonProperty("Dvalue")
	private Date dvalue;
	@JsonProperty("__metadata")
	private __metadata metadata;

	public Integer getIvalue() {
		return ivalue;
	}
	public void setIvalue(Integer _ivalue) {
		this.ivalue = _ivalue;
	}
	public String getSvalue() {
		return svalue;
	}
	public void setSvalue(String _svalue) {
		this.svalue = _svalue;
	}
	public Date getDvalue() {
		return dvalue;
	}
	public void setDvalue(Date _dvalue) {
		this.dvalue = _dvalue;
	}
	public __metadata getMetadata() {
		return metadata;
	}
	public void setMetadata(__metadata _metadata) {
		this.metadata = _metadata;
	}
}

これらの語彙クラスは、サッカー賭け違法 Studioで作成した語彙(ecore)と同じ構造を持つように作成しています。語彙(ecore)の表と見比べて確認してください。
この語彙クラスの構造は、Axis2などを利用サッカー賭け違法WSDLから自動生成したSOAP用Stub内の同名クラスとほぼ同じです。
SOAP用Stubと異なる点は、Jackson特有のアノテーションを追加サッカー賭け違法いる箇所や、__metadata用のメンバをクラスに追加サッカー賭け違法いる箇所です。
対象ディシジョン・サービスを更新する場合、ルールシート(ers, erf)の内容の変更だけであれば、これらの語彙クラスを修正する必要はありません。
もし対象ディシジョン・サービスの語彙(ecore)に対サッカー賭け違法変更があった場合は、これらの語彙クラスも修正を行う必要があります。

■RESTクライアントのメインプログラム

最後にRESTクライアントのメインプログラムexecuteRestMain.javaを作成します。手続きとサッカー賭け違法は以下です。

1.リクエサッカー賭け違法Objectを作成する。
2.リクエサッカー賭け違法Objectをリクエサッカー賭け違法JSONに変換する。
3.適切なHTTPの設定を行う。
4.サッカー賭け違法 ServerにリクエストJSONをPOSTする。
5.サッカー賭け違法 ServerからレスポンスJSONを受け取る。
6.レスポンスJSONをレスポンスObjectに変換する。

リクエストObject, レスポンスObjectを生成しJSONと相互変換するために、前述のJSONマッピング用クラスとJacksonマッパーを使用サッカー賭け違法います。

<executeRestMain.java>

package executeRest ;

import java.io.*;
import java.text.*;
import java.util.*;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils;
import org.apache.http.impl.client.HttpClientBuilder;
import org.codehaus.jackson.map.ObjectMapper;

import SampleVocabulary.*;

public class executeRestMain {

	private static final String CCSERVER_URL = "https://localhost:8080/axis/サッカー賭け違法/execute";
	private static final String DECISIONSERVICE_NAME = "JsonTest";
	private static final DateFormat SDF = new SimpleDateFormat("yyyy-MM-dd");
	private static final String OUTPUT_PATH = "c:/temp/executeRest.log";

	public static void main(String[] args) {	
		try {
			// リクエスト用オブジェクトの作成
			Payload requestObject = createSamplePayload();
			outputPayload(requestObject); // オブジェクトの内容を出力

			// リクエストオブジェクトをJSONに変換
			ObjectMapper mapper = new ObjectMapper();
			mapper.setDateFormat(SDF); // 送受信する日付書式はyyyy-MM-dd
			String requestJson = mapper.writeValueAsString(requestObject);

			// HTTPリクエスト
			HttpPost post = new HttpPost(CCSERVER_URL); // CcServerのREST用URL
			post.setHeader("dsName", DECISIONSERVICE_NAME); // ディシジョン・サービス名(英数字のみ)
			StringEntity content = new StringEntity(requestJson, "UTF-8"); // JSONの文字コードはUTF-8
			content.setContentType("application/json; charset=UTF-8"); 
			post.setEntity(content);

			HttpClient client = HttpClientBuilder.create().build();
			HttpResponse response = client.execute(post);

			if (response.getStatusLine().getStatusCode() == 200) {
				// レスポンスJSONをオブジェクトに変換
				String responseJson = EntityUtils.toString(response.getEntity(), "UTF-8");
				Payload responseObject = mapper.readValue(responseJson, Payload.class);				
				outputPayload(responseObject); // オブジェクトの内容を出力
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.exit(0);
	}

	private static void outputPayload(Payload oPayload) {
		try {
			FileOutputStream fos = new FileOutputStream(OUTPUT_PATH, true);
			PrintStream ps = new PrintStream(fos, true, "UTF-8");
			System.setOut(ps);
		} catch (Exception e) {
			e.printStackTrace();
		}
		String s = "";

		// 親データ, 子データを出力
		for (parent p: oPayload.getParents()) {
			s += "親ID: " + p.getMetadata().getId();
			s += ", 整数: " + p.getIvalue();
			s += ", 文字列: " + p.getSvalue();
			if (p.getDvalue() != null) {
				s += ", 日付: " + SDF.format(p.getDvalue());
			}
			s += "\n";
			if (p.getChildren() == null) {
				continue;
			}
			for (child c: p.getChildren()) {
				s += " 子ID: " + c.getMetadata().getId();
				s += ", 整数: " + c.getIvalue();
				s += ", 文字列: " + c.getSvalue();
				if (c.getDvalue() != null) {
					s += ", 日付: " + SDF.format(c.getDvalue());
				}
				s += "\n";
			}
		}
		System.out.println(s);

		// ルールメッセージを出力
		if (oPayload.getMessages() == null || oPayload.getMessages().getMessage() == null) {
			return;
		}
		s = "";
		for (Message m: oPayload.getMessages().getMessage()) {
			s += m.getSeverity();
			s += ", " + m.getEntityReference();
			s += ", " + m.getText();
			s += "\n";
		}
		System.out.println(s);
	}

	private static Payload createSamplePayload() throws ParseException {
		child[] cs = new child[2];
		cs[0] = createChild(10, "[絵文字: ????\uD83D\uDE90]", SDF.parse("2011-01-02"), "c1");
		cs[1] = createChild(20, "[難漢字: ????\uD867\uDE3D]", SDF.parse("2012-01-02"), "c2");

		child[] cs2 = new child[2];
		cs2[0] = createChild(30, "aaaaaaaaaa", SDF.parse("2013-10-11"),"c3"); 
		cs2[1] = createChild(40, "bbbbbbbbbbb", SDF.parse("2014-11-12"), "c4");

		List listParent = new ArrayList();
		listParent.add(createParent(null, null, null, "p1", cs));
		listParent.add(createParent(null, null, null, "p2", cs2));

		Payload returnObject = new Payload();
		returnObject.setParents(listParent);

		return returnObject;
	}

	private static parent createParent(Integer i, String s, Date d, String _id, child[] cs) {
		if (_id == null) {
			return null;
		}
		parent p = new parent();
		if (i != null) p.setIvalue(i);
		if (s != null) p.setSvalue(s);
		if (d != null) p.setDvalue(d);
		if (cs != null) p.setChildren(cs);
		p.setMetadata(createMetadata(_id, "parent"));

		return p;
	}

	private static child createChild(Integer i, String s, Date d, String _id) {
		if (_id == null) {
			return null;
		}
		child c = new child();
		if (i != null) c.setIvalue(i);
		if (s != null) c.setSvalue(s);
		if (d != null) c.setDvalue(d);
		c.setMetadata(createMetadata(_id, "child"));

		return c;
	}

	private static __metadata createMetadata(String _id, String _type) {
		__metadata m = new __metadata();
		m.setId(_id);
		m.setType(_type);
		return m;
	}
}

ポイントはプログラム内にもコメントとサッカー賭け違法も記述サッカー賭け違法いますが、以下になります。

●プログラム自体の文字コードはUTF-8にサッカー賭け違法ください 。

●HTTPリクエストの設定に関サッカー賭け違法
 ►サッカー賭け違法 ServerのURLは適宜書き換えてください。
 ►Headerで指定するディシジョン・サービス名は英数字にサッカー賭け違法ください。
 ►サッカー賭け違法 Serverへ送受信するJSONの文字コードはUTF-8にしてください。
 ►HttpClientの詳細なログを出力するとデバッグの際に有効です。
 ►送受信したJSON文字列を出力するのもデバッグの際に有効です。

●ディシジョン・サービスへの入力値
 ►ここでは「createSamplePayload()」でハードコードサッカー賭け違法います。
 ►文字列の箇所はUnicode拡張領域の例とサッカー賭け違法、難漢字と絵文字を入れています。
 ►絵文字の一個目は笑顔の絵文字を直接入力し、二個目はサロゲートペアで車の絵文字を指定サッカー賭け違法います。
 ►難漢字の一個目は「しかる」(口へんに七)を直接入力し、二個目はサロゲートペアで「ホッケ」(魚へんに花)を指定
  サッカー賭け違法います。

●日付の書式に関サッカー賭け違法
 ►このプログラムではSOAPやRESTで最も一般的に使われる「yyyy-MM-dd」形式に全て統一サッカー賭け違法います。
 ►サッカー賭け違法 Server自体は他の日付書式でも受け付けます。設定で変更することも可能です。

●ディシジョン・サービスの実行結果
 ►ここでは「outputPayload()」でUTF-8テキストファイルに出力サッカー賭け違法います。

このプログラムのmainを実行し、出力テキサッカー賭け違法(ここでは「C:/temp/executeRest.log」)をWebブラウザなどで表示させると、以下のようになります。
上6行がリクエサッカー賭け違法Objectの中身、その下がレスポンスObjectの中身です。入力値と出力値、ルールメッセージが期待通りに出ていることが確認できます。

<mainの実行結果 >

画像7

download close

閉じる

[2月16日(木)]

「Progress サッカー賭け違法」ハンズオンセミナー

詳細はこちら