質問: 表題の件ですが、 外部サーバーから個人情報を参照・更新するAPIがあって、 リクエストのパラメーターをセットして投げたり、 レスポンスを受け取ってその情報を加工したりしたいのですが、 具体的なJavaの実装についてお伺いしたいです。 また、ローカル環境でテストするときに XMLのスタブを作りたいです。 どう作って、どう設置すればよいでしょうか? 【登場人物】 ★こちらのサーバー ・アクション:/getPersonalInfo ★API ・外部接続先URL:http://www.XXXXXXXXX.xxx/ ・サービス名:servPersonalInfo ・リクエストパラメータ:request1, request2, request3・・・ ・レスポンスパラメーター:response1, response2, response3・・・ ★向こうの個人情報基盤 ・氏名 ・電話番号 ・住所 アクションのgetPersonalInfoメソッドの内は、 具体的にどのようなコーディングになるのでしょうか? 外部サーバーへの接続する際に、メソッドはこれを使うとか、 帰ってきたレスポンスのXMLの中身のプロパティを取得するメソッドはこれを使うとか、 分からないです。 そもそも、 登場人物や懸念事項がよく分かってないので、 精査も兼ねつつお願いしたいです。m(_ _)m
回答: 道のりが長そうで新しい言葉を入れると混乱しそうですね。。 1. 外部APIに接続して 2. パラメーターを送って 3. XMLを取得して 4. 解析して中身をとりだします。 個人情報を扱うAPIではSSLを使ってください。 多くの場合サービス提供している会社に接続元のIPを知らせる必要があります。 スタブは・・他の人に譲ります。 文字化けした!とかは、別途解決してください。 ``` package jp.engawa.test; import java.io.InputStream; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.NodeList; public class Test { public static void main(String[] args) throws Exception { //0. 外部APIに接続して URL url = new URL("http://www.XXXXXXXXX.xxx/servPersonalInfo"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setDoOutput(true); conn.connect(); //1. パラメーターを送って PrintWriter out = new PrintWriter(conn.getOutputStream()); out.write("request1=aaa&request2=bbb"); out.flush(); out.close(); //2. XMLを取得して InputStream in = conn.getInputStream(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(in); in.close(); //3. 解析して中身をとりだします。 NodeList nodes = doc.getElementsByTagName("response1"); for(int i=0; i