根据规格书的说明,每次呼叫api前都要先取得Nonce
要取得Nonce也满简单的,就是以POST方法传送你的ShopNo(当初报名取得api後有另外寄信提供)
程序的部分我想要以OkHttp来进行连线
加dependcy
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.0</version>
</dependency>
之前用的都是apache的Httpclient,这次来用用看OkHttp
建立一个HttpUtil的工具类别
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class HttpUtil {
public static final MediaType JSON
= MediaType.get("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(json,JSON);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
}
先建一个post的方法,其他要用到什麽可以之後再补
参考来源okhttp的范例
接着在我的专案的Application.java
加入以下bean做个小测试
@Bean
CommandLineRunner runner(UserRepo userDao){
return args -> {
HttpUtil util = new HttpUtil();
Map<String,String> map = new HashMap<String,String>();
map.put("ShopNo", "BA0026_001");
String json =new ObjectMapper().writeValueAsString(map);
String res=util.post("https://sandbox.sinopac.com/QPay.WebAPI/api/Nonce", json);
System.out.println(res);
};
}
执行时遇到了
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
的错误,也是java开发者常常遇到的Exception
这是因为我们的jdk的凭证库没有汇入这个我们要连线的网址的凭证,导致连线失败
解决方法也很简单,用chrome连线,点锁头下载.der格式的凭证
只要把凭证汇入jdk中的凭证库就行了
在测试环境我会直接以root凭证汇入,一来时效较长、二来只要是由同个机构签发凭证的网站就也不用再重汇,比较方便
在你目前使用的jdk的bin会有个keytool,
以cmd下指令:
D:\java\jdk-11.0.11\bin>keytool -importcert -file C:\Users\user\Downloads\twca.cer -keystore D:\java\jdk-11.0.11\lib\security/cacerts -alias TWCA_ROOT
输入密码(预设是changeit)後按y确认
就完成了
再试一次就成功罗
程序实作的部分我合并写在
[Day 15] - 初探永丰银行线上收款API - 丰收款 - HASH ID计算(2) +IV计算
>>: Leetcode: 1315. Sum of Nodes with Even-Valued Grandparent
最後一天 终於来到30天的最後一天,不过今天不跟大家分享关於dotnetcore的部分,今天就针对这...
Jenkins任务 今天来建立一个新的Jenkins任务,Jenkins的标准任务流程如下,我们在本...
此篇为前篇的延续唷! 方便阅读再贴一次基本的explain及测试表 mysql> explai...
今天进度 : 鸟哥的 Linux 私房菜 -- 第 10 堂课:使用者管理与 ACL 权限设定 尝试...
组合技 Drone + godog + Mattermost 当有需求要在k8s上透过drone定期...