ARCHIVE  ENTRY  COMMENT  TRACKBACK  CATEGORY  RECOMMEND  LINK  PROFILE  OTHERS
<< September 2020 | 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 >>
<< PostgreSQLインストール | main | gmailでその他メールの送受信 >>
2016.02.05 Friday

スポンサーサイト

一定期間更新がないため広告を表示しています

2010.05.27 Thursday

XML-RPCを使ったweb api通信

JavaでのXML-RPCを使用したweb api通信について調べた。
web api通信には「Apache XML-RPC」を使用。

■前提条件
http://ws.apache.org/xmlrpc/
から以下をダウンロード。
「apache-xmlrpc-3.1.2-bin.tar.gz」
以下のjarファイルを使用。
ws-commons-util-1.0.2.jar
xmlrpc-client-3.1.3.jar
xmlrpc-common-3.1.3.jar
xmlrpc-server-3.1.3.jar

■呼び出し
設定クラスにURLを設定し、クライアントクラスに設定。
クライアントクラスの実行メソッドで実行。
引数にメソッド名と引数(ArrayListクラス)を渡す。

■戻り値
結果はObjectを返すが、戻り値の型により、キャストする。
web api戻り値の型とJavaでキャストする型の対応を以下に記す。
string→String
int→Integer
boolean→Boolean
struct→HashMap
array of 〜→Object[]にキャストして、要素をそれぞれの型にキャスト
以上

■サンプルコード
郵便専門ネットのweb-apiを使用。

---------- ここから ----------
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

/**
 * webapiテストクラス
 *
 */
public class Main {
// webapi url
static String url = "http://yubin.senmon.net:80/service/xmlrpc/";
/**
* @param args
*/
public static void main(String[] args) {
try {
// 
System.out.println("都道府県コード取得 戻り値:文字");
getPrefName("01");
System.out.println("経緯度取得 戻り値:文字配列");
getGeoaddress("1560055");
System.out.println("郵便番号存在チェック 戻り値:boolean");
isPostcodeExist("1560055");
System.out.println("取得可能データ件数 戻り値:int");
getCount();
System.out.println("住所取得 戻り値:構造体");
getAddress("1560055");

} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void getAddress(String postCode) throws Exception {
// webapi method
String method = "yubin.fetchAddressByPostcode";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
paramList.add(postCode);
// 実行
Object[] ret = (Object[])client.execute(method, paramList);

// 結果取得
HashMap map = (HashMap)ret[0];
Iterator iterator = map.keySet().iterator();
while(iterator.hasNext()) {
String key = (String)iterator.next();
Object value = map.get(key);
System.out.println(key + ":" + value);
}
}
public static void getCount() throws Exception {
// webapi method
String method = "yubin.getMaxFetchCount";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
// 実行
Integer ret = (Integer)client.execute(method, paramList);

// 結果取得
System.out.println(ret);
}
public static void isPostcodeExist(String preCode) throws Exception {
// webapi method
String method = "yubin.postcodeExists";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
paramList.add(preCode);
// 実行
Boolean ret = (Boolean)client.execute(method, paramList);

// 結果取得
System.out.println(ret);
}
public static void getPrefName(String preCode) throws Exception {
// webapi method
String method = "yubin.getPrefName";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
paramList.add(preCode);
// 実行
String ret = (String)client.execute(method, paramList);

// 結果取得
System.out.println(ret);
}
public static void getGeoaddress(String postCode) throws Exception {
// webapi method
String method = "yubin.postcodeToGeocode";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
paramList.add(postCode);
// 実行
Object[] ret = (Object[])client.execute(method, paramList);

// 結果取得
for (int ii = 0; ii < ret.length; ii++) {
System.out.println((String)ret[ii]);
}
}
}
2016.02.05 Friday

スポンサーサイト

コメント
コメントする








 
この記事のトラックバックURL
トラックバック
Powered by
30days Album
PR