运之盟开放平台


请求示例代码-JAVA版-简易版

<pre><code class="language-java">package com.yzm.center.open.gateway; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.extern.slf4j.Slf4j; import java.io.Serializable; @Slf4j public class aaa { private static String url = &amp;quot;https://open-beta.56yzm.com:8443&amp;quot;; private static String clientId = &amp;quot;分配的clientId&amp;quot;; private static String clientSecret = &amp;quot;管理员分配的clientSecret&amp;quot;; private static String sign_secret_key = &amp;quot;管理员分配的sign_secret_key&amp;quot;; private static String ivs_public_key = &amp;quot;管理员分配的ivs_public_key&amp;quot;; private static String userCode = &amp;quot;管理员分配的user-code&amp;quot;; public static void main(String[] args) { String apiUrl = String.format(&amp;quot;%s%s&amp;quot;, url, &amp;quot;/api-server/openapi/vehicle/v2/createVehicle&amp;quot;); String reqJsonStr = &amp;quot;{\&amp;quot;carInfoDto\&amp;quot;:{\&amp;quot;carDrivingCopyAddImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;carDrivingCopyImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;carDrivingFrontImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;carLength\&amp;quot;:11,\&amp;quot;carTypesOf\&amp;quot;:17,\&amp;quot;plateColor\&amp;quot;:\&amp;quot;YELLOW\&amp;quot;,\&amp;quot;plateNo\&amp;quot;:\&amp;quot;晋K62255\&amp;quot;,\&amp;quot;roadTransportPermImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;trailerCarDrivingCopyImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;trailerCarDrivingFrontImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;trailerNo\&amp;quot;:\&amp;quot;晋K6U92挂\&amp;quot;,\&amp;quot;useCharacter\&amp;quot;:\&amp;quot;货运\&amp;quot;},\&amp;quot;driverInfoDto\&amp;quot;:{\&amp;quot;driverName\&amp;quot;:\&amp;quot;孟庆祯\&amp;quot;,\&amp;quot;drivingCopyImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;drivingImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;idCardBackImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;idCardFrontImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;,\&amp;quot;idCardNo\&amp;quot;:\&amp;quot;429006199005131414\&amp;quot;,\&amp;quot;phone\&amp;quot;:\&amp;quot;15113151415\&amp;quot;,\&amp;quot;qualificationCardImg\&amp;quot;:\&amp;quot;https://file.rlsk.link/12961571/fb14799fda39444d978972d9b85204f3.jpeg\&amp;quot;},\&amp;quot;yzmUserCode\&amp;quot;:\&amp;quot;YZM_9dO0fhTtOt\&amp;quot;}&amp;quot;; String token = getYzmToken(clientId, clientSecret); YzmSignDto yzmSign = getSign(reqJsonStr); YzmResultBasicDto yzmResultBasicDto = postToYzm(YzmResultBasicDto.class, apiUrl, token, yzmSign, userCode); System.out.println(JSONObject.toJSONString(yzmResultBasicDto)); } /** * 获取 token * * @param clientId * @param clientSecret * @return */ public static String getYzmToken(String clientId, String clientSecret) { HttpResponse httpResponse = HttpUtil .createPost(String.format(&amp;quot;%s%s&amp;quot;, url, &amp;quot;/open-oauth/oauth/token&amp;quot;)) .contentType(&amp;quot;application/x-www-form-urlencoded&amp;quot;) .form(&amp;quot;grant_type&amp;quot;, &amp;quot;client_credentials&amp;quot;) .form(&amp;quot;client_id&amp;quot;, clientId) .form(&amp;quot;client_secret&amp;quot;, clientSecret) .form(&amp;quot;scope&amp;quot;, &amp;quot;read&amp;quot;) .execute(); if (httpResponse.getStatus() != 200) { log.error(&amp;quot;运之盟-开放平台登录异常:{}&amp;quot;, httpResponse.getStatus()); } String body = httpResponse.body(); YzmTokenDto yzmTokenDto = JSONObject.parseObject(body, YzmTokenDto.class); return yzmTokenDto.getAccessToken(); } /** * 生成签名 * * @param jsonStr 待签名参数 json * @return */ private static YzmSignDto getSign(String jsonStr) { try { HttpResponse authorization = HttpUtil.createPost(url + &amp;quot;/crypto/sign&amp;quot;) .contentType(&amp;quot;application/json&amp;quot;) .header(&amp;quot;X-SignKey&amp;quot;, sign_secret_key) .header(&amp;quot;X-CryptoKey&amp;quot;, ivs_public_key) .body(jsonStr) .execute(); //验证结果 if (authorization.getStatus() != 200) { log.error(&amp;quot;请求异常&amp;quot;); } JSONObject jsonObjectSign = JSONObject.parseObject(authorization.body()); YzmSignDto yzmSignDto = new YzmSignDto(); yzmSignDto.setSign(jsonObjectSign.getString(&amp;quot;X-Signature&amp;quot;)); yzmSignDto.setNonce(jsonObjectSign.getLong(&amp;quot;X-Nonce&amp;quot;)); yzmSignDto.setTimeMillis(jsonObjectSign.getLong(&amp;quot;X-Timestamp&amp;quot;)); yzmSignDto.setBodyJson(jsonObjectSign.getJSONObject(&amp;quot;requestBody&amp;quot;)); return yzmSignDto; } catch (Exception e) { log.error(&amp;quot;获取签名异常:&amp;quot; + e); return null; } } /** * @param clazz 待转换类型 * @param apiUrl 请求地址 * @param token token * @param yzmSign 当前毫秒时间戳 * @param &amp;lt;T&amp;gt; 返回类型 * @return */ private static &amp;lt;T&amp;gt; T postToYzm(Class&amp;lt;T&amp;gt; clazz, String apiUrl, String token, YzmSignDto yzmSign, String userCode) { long startTime = System.currentTimeMillis(); log.info(&amp;quot;运之盟开放平台-请求参数:{}&amp;quot;, yzmSign.getBodyJson().toJSONString()); HttpResponse authorization = HttpUtil.createPost(apiUrl) .contentType(&amp;quot;application/json&amp;quot;) .header(&amp;quot;Authorization&amp;quot;, &amp;quot;Bearer &amp;quot; + token) .header(&amp;quot;X-Timestamp&amp;quot;, String.valueOf(yzmSign.getTimeMillis())) .header(&amp;quot;X-Nonce&amp;quot;, String.valueOf(yzmSign.getNonce())) .header(&amp;quot;X-Signature&amp;quot;, yzmSign.getSign()) .header(&amp;quot;user-code&amp;quot;, userCode) .body(yzmSign.getBodyJson().toJSONString()) .execute(); //验证结果 if (authorization.getStatus() != 200) { log.error(&amp;quot;请求异常&amp;quot;); } long endTime = System.currentTimeMillis(); log.info(&amp;quot;运之盟开放平台-耗时:{},返回参数:{}&amp;quot;, endTime - startTime, authorization.body()); return JSONObject.parseObject(authorization.body(), clazz); } @Data public static class YzmSignDto { public JSONObject bodyJson; public String sign; public long timeMillis; public long nonce; } @Data public static class YzmResultBasicDto&amp;lt;T&amp;gt; implements Serializable { public String code; public String info; public T data; } @Data public static class YzmTokenDto { public String accessToken; public String tokenType; public Long expiresIn; public String scope; } } </code></pre>

页面列表

ITEM_HTML