每天我需要做一个例行程序,连接到远程地址,使用我的智能卡进行身份验证,然后在这个远程地址检查我的用户名的任何新信息。
我想自动执行此例程,创建一个连接到该地址的Java应用程序,使用智能卡进行身份验证,然后检查是否有任何新信息。
我尝试了,但没有成功用智能卡设置HttpClient环境,我将卡插入我的机器并设置Cronjob运行,它返回没有卡插入的警告。
代码如下:
HttpClient httpClient = new DefaultHttpClient();
// Secure Protocol implementation.
SSLContext ctx = SSLContext.getInstance("SSL");
// Implementation of a trust manager for X509 certificates
X509TrustManager tm = new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws java.security.cert.CertificateException {
// TODO Auto-generated method stub
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] arg0, String arg1)
throws java.security.cert.CertificateException {
// TODO Auto-generated method stub
}
};
ctx.init(null, new TrustManager[] { tm }, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx);
ClientConnectionManager ccm = httpClient.getConnectionManager();
// register https protocol in httpclient's scheme registry
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", 443, ssf));
HttpGet httpget = new HttpGet("http://remoteserver.com/login.seam");
HttpParams params = httpclient.getParams();
params.setParameter("param1", "paramValue1");
httpget.setParams(params);
System.out.println("REQUEST:" + httpget.getURI());
ResponseHandler responseHandler = new BasicResponseHandler();
String responseBody;
responseBody = httpclient.execute(httpget, responseHandler);
System.out.println(responseBody);
有任何帮助吗?我经常搜索,但我无法使用智能卡进行连接......
提前致谢,抱歉我的英语不好。
答案 0 :(得分:1)
我们没有看到您的智能卡读卡器代码。 您第一次必须从智能卡获取信息。 尝试了解如何使用smartcardio库。 然后将您的应用程序中的所有信息发送到Web。
我认为如果我理解你的问题,它可以帮助你。