需求 : 項目開發到尾期,倉庫系統需要對接我們這邊的制造系統,
為的是制造系統所使用物料時,需向倉庫系統發送請求物料信息,所以需要調用
倉庫接口.
使用技術: RPC
數據傳輸格式: json
開發環境:springboot
1.如何向倉庫發送數據?
注意:發送的數據格式為json 例如 [{"sex":"nan","name":"1111"}] 對象外面需要 [] 直接上代碼
這里轉換json 其實有很多種方法 只要是 [{}] array格式即可
1.1發送數據
@Test void contexts() throws Throwable { Product product = new Product(); product.setName("1111"); product.setSex("nan"); JSONArray jsonArray = new JSONArray(); jsonArray.add(JSONUtil.parse(product)); RpcClientUtil.postJsonRPC("http://127.0.0.1:8888/acceptSigned", jsonArray,"acceptSigned"); }
1.2 RpcClientUtil.java 工具類方便發送數據自定義封裝即可
import com.googlecode.jsonrpc4j.JsonRpcHttpClient;
import java.net.URL;
/**
* address:要送數據到哪個地址
* params : json數據
* methodName: 接口的方法名字
*/
public class RpcClientUtil {
public static String postJsonRPC(String address, Object params, String methodName) throws Throwable {
URL url = null;
JsonRpcHttpClient jsonRpcHttpClient = null;
String result = null;
try {
url = new URL(address);
jsonRpcHttpClient = new JsonRpcHttpClient(url);
result = jsonRpcHttpClient.invoke(methodName, params, String.class);
} catch (Exception e) {
throw e;
} finally {
url = null;
jsonRpcHttpClient = null;
}
return result;
}
}
2.倉庫如何接收數據?
需要編寫接口 @JsonRpcService(value = "acceptSigned") acceptSigned 遠程地址拼接用的
例如 http://127.0.0.1:8888/acceptSigned
2.1接口AcceptSignedAPI.java
package com.example.rpctest.service; import com.googlecode.jsonrpc4j.JsonRpcService; @JsonRpcService(value = "acceptSigned") public interface AcceptSignedAPI { public void acceptSigned(Object o); }
2.2 接口實現類 注意使用 @AutoJsonRpcServiceImpl 方法名為 acceptSigned
package com.example.rpctest.service.impl; import com.example.rpctest.service.AcceptSignedAPI; import com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImpl; import org.springframework.stereotype.Service; @Service @AutoJsonRpcServiceImpl public class AcceptSignedImpl implements AcceptSignedAPI { @Override public void acceptSigned(Object o) { System.out.println("222"+o); } }
maven 依賴
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>rpctest</artifactId> <version>0.0.1-SNAPSHOT</version> <name>rpctest</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--rpc--> <dependency> <groupId>com.github.briandilley.jsonrpc4j</groupId> <artifactId>jsonrpc4j</artifactId> <version>1.5.3</version> </dependency> <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-core --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.6.6</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.72</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.10</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
注意發送數據格式如下

成功接收

