再度、wikipedia apiを使ってみたい。- Java + axis2
2010/09/01
axis2
java
wikipediaapi
wsdl
プログラマメモ2: wikipedia apiを使ってみたい。- Java + axis2
Javaです。二年前の記事ですが、もう一度チャレンジです。
僕の環境はmac osxでJava1.6です。Eclipseベースで行ってます。
workspaceに、空のJavaプロジェクトを作成して、libフォルダを作成して、Axis2を解凍しておいておきます。
今回使ったのは、1.5.1です。
Apache Axis2 -
ついでにaxis2のlibにあるjarをとりあえず全部、buildpathにaddしておきます。
ほんとは、必要なものだけで選んでおきたいけど...
プロジェクト内にworkフォルダを用意してそこでWSDLからJavaのソースコード生成します.
ターミナル(windowsならコマンドプロンプト?)で、下の命令を実行
../lib/axis2-1.5.1/bin/wsdl2java.sh -uri http://dev.wikipedia-lab.org/WikipediaOntologyAPIv3/Service.asmx?WSDL -p wikipediaapi
-p指定で、wikipediaapiとします。
今回はパッケージをwikipediaapiとしてみました。
あと環境変数JAVA_HOMEは設定してないといけないです。
あと、ワーニングがでてきますが、気にしないで、前にすすみます。
eclipseでみると下のような感じ
できたソースをeclipseのビルドパスに含めてしまいます。
で、下の感じ。
これで生成できたので、あとは利用するだけです。
ちょっとしたtipsですが、生成されたソースフォルダと自分で作成するソースのフォルダをeclipseで別々にしておくと、
いろいろあとから変更しやすくなります。
サンプルコード
package wikipediaapi;
import java.rmi.RemoteException;
import org.apache.axis2.databinding.ADBException;
import org.apache.axis2.databinding.types.UnsignedInt;
import wikipediaapi.ServiceStub.GetThesaurusDS;
import wikipediaapi.ServiceStub.GetThesaurusDSResponse;
import wikipediaapi.ServiceStub.GetTopCandidateIDFromKeyword;
import wikipediaapi.ServiceStub.GetTopCandidateIDFromKeywordResponse;
public class Test {
public static void main(String[] args) throws RemoteException, ADBException {
String[] keywords = { "侍", "apple", "google", "o_o!" };
for (String k : keywords) {
System.out.println(b(a(k)));
}
}
static int a(String skeyword) throws RemoteException {
ServiceStub serviceStub = new ServiceStub();
GetTopCandidateIDFromKeyword keyword = new GetTopCandidateIDFromKeyword();
keyword.setKeyword(skeyword);
keyword.setLanguage("Japanese");
GetTopCandidateIDFromKeywordResponse response = serviceStub
.getTopCandidateIDFromKeyword(keyword);
return response.getGetTopCandidateIDFromKeywordResult().intValue();
}
static String b(int i) throws RemoteException {
ServiceStub serviceStub = new ServiceStub();
GetThesaurusDS getThesaurusDS = new GetThesaurusDS();
getThesaurusDS.setLanguage("Japanese");
getThesaurusDS.setIFrom(new UnsignedInt(i));
GetThesaurusDSResponse response = serviceStub
.getThesaurusDS(getThesaurusDS);
return "" + response.localGetThesaurusDSResult.localExtraElement;
}
}
import java.rmi.RemoteException;
import org.apache.axis2.databinding.ADBException;
import org.apache.axis2.databinding.types.UnsignedInt;
import wikipediaapi.ServiceStub.GetThesaurusDS;
import wikipediaapi.ServiceStub.GetThesaurusDSResponse;
import wikipediaapi.ServiceStub.GetTopCandidateIDFromKeyword;
import wikipediaapi.ServiceStub.GetTopCandidateIDFromKeywordResponse;
public class Test {
public static void main(String[] args) throws RemoteException, ADBException {
String[] keywords = { "侍", "apple", "google", "o_o!" };
for (String k : keywords) {
System.out.println(b(a(k)));
}
}
static int a(String skeyword) throws RemoteException {
ServiceStub serviceStub = new ServiceStub();
GetTopCandidateIDFromKeyword keyword = new GetTopCandidateIDFromKeyword();
keyword.setKeyword(skeyword);
keyword.setLanguage("Japanese");
GetTopCandidateIDFromKeywordResponse response = serviceStub
.getTopCandidateIDFromKeyword(keyword);
return response.getGetTopCandidateIDFromKeywordResult().intValue();
}
static String b(int i) throws RemoteException {
ServiceStub serviceStub = new ServiceStub();
GetThesaurusDS getThesaurusDS = new GetThesaurusDS();
getThesaurusDS.setLanguage("Japanese");
getThesaurusDS.setIFrom(new UnsignedInt(i));
GetThesaurusDSResponse response = serviceStub
.getThesaurusDS(getThesaurusDS);
return "" + response.localGetThesaurusDSResult.localExtraElement;
}
}
: