java间接调用_无法解析类型 java.util.Map$Entry。从必需的 .class 文件间接引用了它...

FileInputStream流的文件名要是硬盘中真实存在的文件,而src是虚拟目录,你可以试试类加载器的方式读取。代码如下:

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

public class properTest {

public static void main(String[] args) throws IOException {

InputStream in = properTest.class.getClass().getResourceAsStream("/a.properties");

Properties prop = new Properties();

prop.load(in);

String value = (String) prop.getProperty("daoName");

System.out.println(value);

}

}

关于 properTest.class.getClass().getResourceAsStream()类加载器的知识,你可以百度一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是Java代码示例,用于调用微信支付V3的证书接口: ```java import java.io.*; import java.net.*; import java.security.KeyStore; import java.security.PrivateKey; import java.security.Signature; import java.security.cert.X509Certificate; import java.util.Base64; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.net.ssl.*; import org.apache.commons.io.IOUtils; public class WeChatPayV3CertApi { private static final String CERT_FILE = "apiclient_cert.p12"; // 商户证书文件名 private static final String CERT_PASSWORD = "商户证书密码"; // 商户证书密码 private static final String MCH_ID = "商户号"; // 商户号 private static final String API_V3_KEY = "微信支付V3密钥"; // 微信支付V3密钥 private static final String API_V3_CERT_SERIAL_NO = "微信支付V3证书序列号"; // 微信支付V3证书序列号 private static final String API_V3_CERT_PRIVATE_KEY = "微信支付V3证书私钥"; // 微信支付V3证书私钥 private static final String API_HOST = "api.mch.weixin.qq.com"; public static void main(String[] args) { String result = requestWeChatPayV3Cert(); System.out.println(result); } public static String requestWeChatPayV3Cert() { try { URL url = new URL("https://" + API_HOST + "/v3/certificates"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.setRequestProperty("Host", API_HOST); conn.setRequestProperty("Accept", "application/json"); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"); conn.setRequestProperty("Authorization", getAuthorizationHeader(url, "GET", "")); if (conn.getResponseCode() == 200) { String result = IOUtils.toString(conn.getInputStream(), "UTF-8"); conn.disconnect(); return result; } else { String result = IOUtils.toString(conn.getErrorStream(), "UTF-8"); conn.disconnect(); return result; } } catch (Exception e) { e.printStackTrace(); } return null; } private static String getAuthorizationHeader(URL url, String method, String body) throws Exception { String nonceStr = Long.toString(new Date().getTime()); String timestamp = Long.toString(new Date().getTime() / 1000); String message = getMessage(nonceStr, timestamp, url, method, body); String signature = getSignature(API_V3_CERT_PRIVATE_KEY, message); Map<String, String> map = new HashMap<String, String>(); map.put("mchid", MCH_ID); map.put("nonce_str", nonceStr); map.put("timestamp", timestamp); map.put("serial_no", API_V3_CERT_SERIAL_NO); map.put("signature", signature); StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : map.entrySet()) { sb.append(entry.getKey()); sb.append("=\""); sb.append(entry.getValue()); sb.append("\", "); } sb.deleteCharAt(sb.length() - 2); return "WECHATPAY2-SHA256-RSA2048 " + sb.toString(); } private static String getMessage(String nonceStr, String timestamp, URL url, String method, String body) { StringBuilder sb = new StringBuilder(); sb.append(method.toUpperCase()); sb.append('\n'); sb.append(url.getPath()); sb.append('\n'); sb.append(url.getHost().toLowerCase()); sb.append('\n'); sb.append(getQueryString(url)); sb.append('\n'); sb.append("nonce_str="); sb.append(nonceStr); sb.append("&"); sb.append("timestamp="); sb.append(timestamp); sb.append('\n'); sb.append(body); return sb.toString(); } private static String getQueryString(URL url) { String query = url.getQuery(); if (query == null) { return ""; } else { return query; } } private static String getSignature(String privateKeyStr, String message) throws Exception { byte[] messageBytes = message.getBytes("UTF-8"); byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyStr); KeyStore keystore = KeyStore.getInstance("PKCS12"); ByteArrayInputStream bis = new ByteArrayInputStream(privateKeyBytes); keystore.load(bis, CERT_PASSWORD.toCharArray()); bis.close(); PrivateKey privateKey = (PrivateKey) keystore.getKey("apiclient", CERT_PASSWORD.toCharArray()); X509Certificate certificate = (X509Certificate) keystore.getCertificate("apiclient"); Signature sign = Signature.getInstance("SHA256withRSA"); sign.initSign(privateKey); sign.update(messageBytes); byte[] signatureBytes = sign.sign(); return Base64.getEncoder().encodeToString(signatureBytes); } private static SSLSocketFactory getSSLFactory() throws Exception { char[] password = API_V3_KEY.toCharArray(); KeyStore ks = KeyStore.getInstance("PKCS12"); FileInputStream fis = new FileInputStream(CERT_FILE); ks.load(fis, password); fis.close(); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); kmf.init(ks, password); TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); tmf.init(ks); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); return sslContext.getSocketFactory(); } } ``` 请注意,要运行此代码,您需要将商户证书文件apiclient_cert.p12放在当前目录中,并将CERT_PASSWORD替换为您的商户证书密码。 此代码将输出调用微信支付V3的证书接口的响应结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值