I recently had to use bugzilla's webservice API in a Java based project. And I was surprised to see that there was almost no sample code available for using bugzilla's webservice API especially for Java. So in the end I used the XmlRpcClient provided by Apache. Here's the sample code...
private XmlRpcClient getClient(String serverURL) {
try {
String apiURL = serverURL + "xmlrpc.cgi";
XmlRpcClient rpcClient;
XmlRpcClientConfigImpl config;
config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(apiURL));
rpcClient = new XmlRpcClient();
rpcClient.setConfig(config);
return rpcClient;
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
public HashMap login(String serverURL, String login, String password) {
try {
XmlRpcClient rpcClient = getClient(serverURL);
ArrayList<Object> params = new ArrayList<Object>();
Hashtable<String, Object> executionData = new Hashtable<String, Object>();
executionData.put("login", login);
executionData.put("password", password);
executionData.put("remember", true);
params.add(executionData);
HashMap result = (HashMap) rpcClient.execute("User.login", params);
System.out.println(result);
return result;
} catch (XmlRpcException e) {
e.printStackTrace();
}
return null;
}
Here are the maven dependencies required by this code…
<repository>
<id>mvnrepository</id>
<url>http://mvnrepository.com/artifact/</url>
</repository>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-client</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-common</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>ws-commons-util</groupId>
<artifactId>ws-commons-util</artifactId>
<version>1.0.1</version>
</dependency>
Or if you don’t use maven you can just download these libraries form Apache’s website…
- xmlrpc-client
- xmlrpc-common
- ws-commons-util