xmlrpc实现bugzilla4   xmlrpc api调用(无会话保持功能,单一接口请求),如需会话保持,请参考我的另外一篇随笔(bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能 (2015-06-08 18:53))

 

第一步: 在pom.xml中导入 (如果不是maven工程,直接去下载jar包引入即可)

<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.xml.rpc</artifactId>
<version>3.2-b06</version>
</dependency>

 

 

第二步: 新建一个类XmlRPCUtil.java

import java.net.URL;
import java.security.cert.X509Certificate;
import java.util.HashMap;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

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


public class XmlRPCUtil
{

public static void main(String[] args)

{
try
{

//注意https://bugzilla.tools.vipshop.com/bugzilla/这部分的URL要更换成你自己的域名地址,还有bugzilla的账户和密码
String url = "https://bugzilla.tools.vipshop.com/bugzilla/xmlrpc.cgi";
String method = "User.login";

// 针对ssl的https请求做特殊处理
initSSL();

login(url, method);
}
catch (Exception e0)
{
e0.printStackTrace();
}

}

public static void login(String url, String method)
throws Exception
{

XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
config.setEnabledForExtensions(true);

XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);

// 调用bugzilla的User.login实现登陆,请求有三个参数login password remember(可选)
String login = new String("你的bugzilla账号");
String password = new String("你的bugzilla密码");

HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("login", login);
parameters.put("password", password);

Object[] params = new Object[] {parameters};
Object result = (Object)client.execute(method, params);

System.out.println(result.toString());

}

public static void initSSL()
throws Exception
{

// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager()
{
public X509Certificate[] getAcceptedIssuers()
{
return null;
}

public void checkClientTrusted(X509Certificate[] certs, String authType)
{
// Trust always
}

public void checkServerTrusted(X509Certificate[] certs, String authType)
{
// Trust always
}
}};

// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
// Create empty HostnameVerifier
HostnameVerifier hv = new HostnameVerifier()
{
public boolean verify(String arg0, SSLSession arg1)
{
return true;
}
};

sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(hv);

}

}

 

第三步: 在该类里运行application即可看到输出值

 

 

本着资源共享的原则,欢迎各位朋友在此基础上完善,并进一步分享,让我们的实现更加优雅。如果有任何疑问和需要进一步交流可以加我QQ 1922003019或者直接发送QQ邮件给我沟通   

sea  2015  中国:广州:VIP