相关疑难解决方法(0)

在Android上使用客户端/服务器证书进行双向身份验证SSL套接字

我正在开发一款需要客户端和服务器证书身份验证的Android应用.我有一个SSLClient类,我创建它在常规桌面Java SE 6上运行得很漂亮.我已将它移动到我的Android项目中,我收到以下错误:"未找到KeyStore JKS实现".

我在网上看了一下,看起来有可能在Android上不支持Java Keystores(太棒了!)但是我觉得它还有更多的东西,因为我发现的示例代码都不像我我试图去做.我发现的一切都谈到了使用http客户端而不是原始SSL套接字.我需要这个应用程序的SSL套接字.

下面是我的SSLClient.java文件中的代码.它读取密钥库和信任库,创建到服务器的SSL套接字连接,然后在等待来自服务器的输入行时运行循环,然后通过调用不同类中的方法来处理它们.我非常有兴趣听到有任何在Android平台上使用SSL套接字的经验的人.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.security.AccessControlException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;

import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManagerFactory;
import otherpackege.OtherClass;

import android.content.Context;
import android.util.Log;

public class SSLClient 
{
    static SSLContext ssl_ctx;

    public SSLClient(Context context)
    {
        try
        {
            // Setup truststore
            KeyStore trustStore = KeyStore.getInstance("BKS");
            TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            InputStream trustStoreStream = context.getResources().openRawResource(R.raw.mysrvtruststore);
            trustStore.load(trustStoreStream, "testtest".toCharArray());
            trustManagerFactory.init(trustStore); …
Run Code Online (Sandbox Code Playgroud)

java ssl android

43
推荐指数
1
解决办法
5万
查看次数

将复杂参数从ksoap Android传递到WCF Web服务

我从ksoap调用.NET WCF Web服务我的WebMethod采用一个复杂的参数UpdatableCustomerInfo

public class UpdatableCustomerInfo implements KvmSerializable {

public String CustomerId;
public String Facebook;

@Override
public Object getProperty(int arg0) {
    String retVal = "";
     switch(arg0)
        {
        case 0:
            retVal = CustomerId;
            break;

        case 1:
            retVal = Facebook;
            break;
        }

        return retVal;
}

@Override
public int getPropertyCount() {
    return 2;
}

@Override
public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
     switch(arg0)
        {
        case 0:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "CustomerId";
            break;
        case 1:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "Facebook"; …
Run Code Online (Sandbox Code Playgroud)

java wcf android soap android-ksoap2

7
推荐指数
2
解决办法
4201
查看次数

标签 统计

android ×2

java ×2

android-ksoap2 ×1

soap ×1

ssl ×1

wcf ×1