feat(api): 添加 PT API 客户端示例代码
- 新增 PTAPIClient 类,用于演示如何调用 PT API - 添加证书文件和密码文件 - 实现了加载证书、初始化 SSL 上下文和发送 HTTPS 请求的逻辑 - 包含了跳过证书和主机名验证的实现main-pt
parent
529bd5f1d0
commit
f229c9ca4f
|
@ -0,0 +1,86 @@
|
||||||
|
package com.ff.game.api.pt.client;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
|
import javax.net.ssl.*;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.security.KeyStore;
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.security.cert.X509Certificate;
|
||||||
|
|
||||||
|
public class PTAPIClient {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
CallAPI();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CallAPI() {
|
||||||
|
try {
|
||||||
|
KeyStore ks = KeyStore.getInstance("PKCS12");
|
||||||
|
//get certificate file from test/resources as InputFileStream & load to existing keystore
|
||||||
|
Path path = Paths.get(System.getProperty("user.dir"),"pp_p12");
|
||||||
|
URL fileURL = new File(path.resolve("AGDRA_UAT.p12").toAbsolutePath().toString()).toURI().toURL();
|
||||||
|
|
||||||
|
File file = new File(fileURL.getFile());
|
||||||
|
FileInputStream fis = new FileInputStream(file);
|
||||||
|
ks.load(fis, "A6ZCfYoycq5tDa5p".toCharArray());
|
||||||
|
|
||||||
|
|
||||||
|
//Create KeyManagerFactory using loaded keystore
|
||||||
|
KeyManagerFactory kmf =
|
||||||
|
KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
|
||||||
|
kmf.init(ks, "A6ZCfYoycq5tDa5p".toCharArray());
|
||||||
|
KeyManager[] kms = kmf.getKeyManagers();
|
||||||
|
//Create TrustManager to bypass trusted certificate check
|
||||||
|
TrustManager[] trustAllCerts = new TrustManager[]{
|
||||||
|
new X509TrustManager() {
|
||||||
|
@Override
|
||||||
|
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void checkClientTrusted(X509Certificate[] certs, String
|
||||||
|
authType) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void checkServerTrusted(X509Certificate[] certs, String
|
||||||
|
authType) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//Hostname verification bypass method
|
||||||
|
HostnameVerifier allHostsValid = new HostnameVerifier() {
|
||||||
|
@Override
|
||||||
|
public boolean verify(String hostname, SSLSession session) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//Set connection properties to use bypass certificate/hostname check methods
|
||||||
|
|
||||||
|
SSLContext sslContext = null;
|
||||||
|
sslContext = SSLContext.getInstance("TLS");
|
||||||
|
sslContext.init(kms, trustAllCerts, new SecureRandom());
|
||||||
|
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
|
||||||
|
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
|
||||||
|
//Send API call together with entity key for validation
|
||||||
|
HttpsURLConnection connection = (HttpsURLConnection) new
|
||||||
|
URL("https://kioskpublicapi.88shared.com/api/player/create/").openConnection();
|
||||||
|
connection.setRequestProperty("Pragma", "2e51a98e76df7e2e22d720b13ffdb5cd05a90a921e46d54651b046ba08ae7d55f47bbd23e81fba733c170271f9789e16b21b4501ee026271bce0bb357cceaaba");
|
||||||
|
InputStream response = connection.getInputStream();
|
||||||
|
String resp = IOUtils.toString(response);
|
||||||
|
System.out.println(resp);
|
||||||
|
connection.disconnect();
|
||||||
|
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
Bag Attributes
|
||||||
|
localKeyID: A1 EA B4 FE 75 13 56 C4 8D 9A 45 97 9A 09 52 C5 3A 80 52 AF
|
||||||
|
Key Attributes: <No Attributes>
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpQIBAAKCAQEAyX3zP0OnqujQYoCnXMr18fNnigqPNfW5o3UeafPlbk9+2iNW
|
||||||
|
vrdjIbvOxnHA7kca6PfUtWcws3HrFmt0KsfBRbhKh7Kf1z6c0+U2TtpMl923nhzf
|
||||||
|
FLTrB239joAwsBnkRjEhcqWqYWZXEnhLohH4x1eCYuWFQB2dWMJxaGRawa+llJ9e
|
||||||
|
rkyYWKzyCIkSBAtA/fxND4SqB7WftXzrPFf9z1P92nm8iKiEJm5xOM14b8bsAeyr
|
||||||
|
sTcXLfgH4NHBzOSghWeGlDLDF/Cpra1cB5zL6JjS8dEGHJ1XKZxJgwIlTOL6Q5O5
|
||||||
|
ElhCT4QnBhLxFHBC+2kmtgaRHZRyrcnXliU/6QIDAQABAoIBAQCL5qe+hXslcAFA
|
||||||
|
Y5PRGhsqo5aAglRtYvBCTk+PwYjLzuaFD4RrZ2mtQnmPz+vlhflpSKqoSb3G2pIg
|
||||||
|
PvupuIi5n/wfvCa/jPnXJo9OsMP9rjSP0/wQpI2L2xLyno8vtsqI8hQHRn/GoQhU
|
||||||
|
CrJ5FYFm55vgjvy2R9m4h0m28fcSA2YfQWZspsWf0VjzxNfYWJAu1PcR1oyzscMA
|
||||||
|
ts8fc/4+GIeSQlfl4B2wb0ZJk+z3Z/Cn+9Dzi3uCZrlm65qBAvQFuhPZzdr3odwE
|
||||||
|
9GLHAkFBU47XKDsBZNEesowstci57A5EL8EBrHiXX1hDc4bVhGbdq/nnrUcIV2T5
|
||||||
|
4/6sS7MBAoGBAPvl0GAgr73VG8N6a2dgH3tbeJk9qDHxc76he0+lvWi6mWYW56eN
|
||||||
|
MMTUYK8PJHKIio/im8vD2HMDKNKcIH0JYWfm8uGd1ZgsrCOwYuC/o9hiEim583e7
|
||||||
|
TuoibhB0oUqWiJrOlc5QS1AgZjUi0ZL/fDfFgYfZ1/Zb/l0sKq4F385fAoGBAMzF
|
||||||
|
/Wje6UNA09U7ftEAiwyGOJj1EfIWoEQrcdsxaRZrX9OnEgZakUqRtfT4i404faoq
|
||||||
|
OjsddQ9iyRxZAenHTrbzK2i4mszp2GVdsZgcjrAswUJcpDR97ov5HiOjEg+7dPiR
|
||||||
|
zrhunylAQ9fElZAUK4NHFNrhAJ1Vwh2wvRa/vYa3AoGAeq0Qj1A75nqb+9Zp6j2A
|
||||||
|
94WztQW3HSOXF/by4/Y2yYNe474x8YKshp9busXoHTNsL+jPsSvfBRw7zF4m4F4q
|
||||||
|
Jvztun0wodzXtMXZUdVjCSWx7MpXzS7WnuZHrhHu3zFys9n6UTD/jLVKsYQUhr+Q
|
||||||
|
EmVI0Q2BxMRGm7+/xWKs/YcCgYEAnc4iqNPIPXzTAquT4mshvSgeq7mI9+B55673
|
||||||
|
Ui00yAM9WPWSjXT0LNw3ti5oFQ+owB9EutPLp2zAgWkScV+YCKNDG7PQEARSMGPQ
|
||||||
|
/eFcEOaclJCiNpWp5RK5KEt+GsOitABhp34QiBCvd7NWcy8oDUYVC0yEVbuGGa1f
|
||||||
|
Ow3Od+cCgYEA9G7ZGzkA5pNKE0fKzdmN4+oPYB8BCnSPKf6z2Xvu8hDR4CuSlbXN
|
||||||
|
Nps4zrhs8v4u+2J+IXOgRgKJd+Culg4AdY5hcSrdbWOmebxWVEC+VzaXvTQTUF62
|
||||||
|
hSmlSD/hyKIxKMGbx6h74gQ86d7NgPHVefZPrYiAXPXHAj79WKA23LA=
|
||||||
|
-----END RSA PRIVATE KEY-----
|
Binary file not shown.
|
@ -0,0 +1,36 @@
|
||||||
|
Bag Attributes
|
||||||
|
localKeyID: A1 EA B4 FE 75 13 56 C4 8D 9A 45 97 9A 09 52 C5 3A 80 52 AF
|
||||||
|
subject=/CN=KioskAPI ASIA-SHARED-PROD-UMS CRXUATTLE (CHG0110705)/O=Playtech Estonia/OU=Infra Operations/C=EE/ST=Tartumaa/L=Tartu/DC=2228591
|
||||||
|
issuer=/CN=Playtech Production API Auth CA - G1/OU=Security/O=Playtech PLC/C=IM
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFjDCCBHSgAwIBAgIINW/4hQUOxmkwDQYJKoZIhvcNAQELBQAwZjEtMCsGA1UE
|
||||||
|
AwwkUGxheXRlY2ggUHJvZHVjdGlvbiBBUEkgQXV0aCBDQSAtIEcxMREwDwYDVQQL
|
||||||
|
DAhTZWN1cml0eTEVMBMGA1UECgwMUGxheXRlY2ggUExDMQswCQYDVQQGEwJJTTAe
|
||||||
|
Fw0yNDA0MzAwMDAwMDBaFw0yNjAxMDUxMDAwMDBaMIG+MT0wOwYDVQQDDDRLaW9z
|
||||||
|
a0FQSSBBU0lBLVNIQVJFRC1QUk9ELVVNUyBDUlhVQVRUTEUgKENIRzAxMTA3MDUp
|
||||||
|
MRkwFwYDVQQKDBBQbGF5dGVjaCBFc3RvbmlhMRkwFwYDVQQLDBBJbmZyYSBPcGVy
|
||||||
|
YXRpb25zMQswCQYDVQQGEwJFRTERMA8GA1UECAwIVGFydHVtYWExDjAMBgNVBAcM
|
||||||
|
BVRhcnR1MRcwFQYKCZImiZPyLGQBGRYHMjIyODU5MTCCASIwDQYJKoZIhvcNAQEB
|
||||||
|
BQADggEPADCCAQoCggEBAMl98z9Dp6ro0GKAp1zK9fHzZ4oKjzX1uaN1Hmnz5W5P
|
||||||
|
ftojVr63YyG7zsZxwO5HGuj31LVnMLNx6xZrdCrHwUW4Soeyn9c+nNPlNk7aTJfd
|
||||||
|
t54c3xS06wdt/Y6AMLAZ5EYxIXKlqmFmVxJ4S6IR+MdXgmLlhUAdnVjCcWhkWsGv
|
||||||
|
pZSfXq5MmFis8giJEgQLQP38TQ+Eqge1n7V86zxX/c9T/dp5vIiohCZucTjNeG/G
|
||||||
|
7AHsq7E3Fy34B+DRwczkoIVnhpQywxfwqa2tXAecy+iY0vHRBhydVymcSYMCJUzi
|
||||||
|
+kOTuRJYQk+EJwYS8RRwQvtpJrYGkR2Ucq3J15YlP+kCAwEAAaOCAeMwggHfMA4G
|
||||||
|
A1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUxW8U
|
||||||
|
91f9h5D0CJ89mAQ7STEigjQwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBQbE05j
|
||||||
|
cuUE9DORnQEwzjPKZ8dAoDCCAWgGA1UdHwSCAV8wggFbMIG4oEqgSIZGaHR0cDov
|
||||||
|
L3BraS5pbmZyYS5wdGVjL2NybC9QbGF5dGVjaF9Qcm9kdWN0aW9uX0FQSV9BdXRo
|
||||||
|
X0NBXy1fRzEuY3JsLmRlcqJqpGgwZjEtMCsGA1UEAwwkUGxheXRlY2ggUHJvZHVj
|
||||||
|
dGlvbiBBUEkgQXV0aCBDQSAtIEcxMREwDwYDVQQLDAhTZWN1cml0eTEVMBMGA1UE
|
||||||
|
CgwMUGxheXRlY2ggUExDMQswCQYDVQQGEwJJTTCBnaCBmqCBl4aBlGxkYXA6Ly9w
|
||||||
|
cm9kbGRhcC5pbmZyYS5wdGVjOjM4OS9jbj1QbGF5dGVjaCUyMFByb2R1Y3Rpb24l
|
||||||
|
MjBBUEklMjBBdXRoJTIwQ0ElMjAtJTIwRzEsb3U9Q1JMLG91PVBLSSxkYz1wbGF5
|
||||||
|
dGVjaCxkYz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5hcnkwDQYJ
|
||||||
|
KoZIhvcNAQELBQADggEBABozAUwJAIKNrjh/ZMjyq52u346zDjLP4imY+1ZGRPJG
|
||||||
|
8SY2GYosPOIpfYdFJ3UatC/EsNwr9XsKUsJ5MD0SjNgx3MgyPjCBWw6xunn1E9WX
|
||||||
|
OquLn74t49NP+He/oDTWGImWeaHIJcMwgU6TD6/ZPUuUhdeZCjDMYmJUuxmrZkL1
|
||||||
|
iNSu1jMqcIHCtuiKDbluuaUQtk+5eUFilJnJIQUVqqBr/XXG7GfQ6fq/c1GjJNqM
|
||||||
|
mgfEJEwPWdjeS5ynBSCE0AnocziyKpJg4RXPiXKgDVDfAscgF93JmnEIYYDtm+oU
|
||||||
|
0XhJZg1dKZtpOAM2IfCndP8VKHY0RTD2QZDg56p+9Kc=
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1 @@
|
||||||
|
A6ZCfYoycq5tDa5p
|
Loading…
Reference in New Issue