Android 使用Hprose 调用Https接口

Hprose 是PHPrpc的升级版本,支持Https调用;

下面给出Android 调用的方式和 Hprose-java的下载地址。


/**
	 * hprose
	 * 
	 * @return
	 * @throws IOException
	 * @throws NoSuchAlgorithmException
	 * @throws KeyManagementException
	 */
	public static String hprose(String jsonString) throws IOException {

		HproseHttpClient client = new HproseHttpClient();
		NetHelper(client);
		client.useService("https://192.168.0.250:8443/Hello");

		String result = (String) client.invoke("sayHello",
				new Object[] { "Hprose" });

		Log.d("HPROSE", "resut: " + result);
		return result;
	}

	private static void NetHelper(HproseHttpClient client) {
		X509HostnameVerifier hostnameVerifier = SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
		SSLContext sslContext = null;
		try {
			MyX509TrustManager mtm = new MyX509TrustManager();
			TrustManager[] tms = new TrustManager[] { mtm };

			// 初始化X509TrustManager中的SSLContext
			sslContext = SSLContext.getInstance("TLS");
			sslContext.init(null, tms, new java.security.SecureRandom());
		} catch (Exception e) {
			e.printStackTrace();
		}

		// 为javax.net.ssl.HttpsURLConnection设置默认的SocketFactory和HostnameVerifier
		if (sslContext != null) {
			// client.setDefaultSSLSocketFactory(sslContext
			// .getSocketFactory());
			client.setSSLSocketFactory(sslContext.getSocketFactory());
		}
		// client.setDefaultHostnameVerifier(hostnameVerifier);
		client.setHostnameVerifier(hostnameVerifier);
	}

	public static class MyX509TrustManager implements X509TrustManager {
		X509TrustManager myJSSEX509TrustManager = null;

		public MyX509TrustManager() throws Exception {
			KeyStore ks = KeyStore.getInstance("BKS");
			// ks.load(new FileInputStream("trustedCerts"),
			// "passphrase".toCharArray()); //---->
			// 这是加载自己的数字签名证书文件和密码,在这里这里没有,所以不需要
			TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
			tmf.init(ks);
			TrustManager tms[] = tmf.getTrustManagers();
			for (int i = 0; i < tms.length; i++) {
				if (tms[i] instanceof X509TrustManager) {
					myJSSEX509TrustManager = (X509TrustManager) tms[i];
					return;
				}
			}
		}

		@Override
		public void checkClientTrusted(X509Certificate[] arg0, String arg1)
				throws CertificateException {
			// sunJSSEX509TrustManager.checkClientTrusted(arg0, arg1);
		}

		@Override
		public void checkServerTrusted(X509Certificate[] arg0, String arg1)
				throws CertificateException {
			// sunJSSEX509TrustManager.checkServerTrusted(arg0, arg1);
		}

		@Override
		public X509Certificate[] getAcceptedIssuers() {
			// X509Certificate[] acceptedIssuers = sunJSSEX509TrustManager
			// .getAcceptedIssuers();
			// return acceptedIssuers;
			return null;
		}
	}


参考资料: http://blog.csdn.net/sgz_china/article/details/7198889


Hprose-java下载地址:https://github.com/hprose/hprose-java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值