diff --git a/sop-example/sop-auth/pom.xml b/sop-example/sop-auth/pom.xml
index 1a170908..837f1eaa 100644
--- a/sop-example/sop-auth/pom.xml
+++ b/sop-example/sop-auth/pom.xml
@@ -26,7 +26,7 @@
com.gitee.sop
sop-service-common
- 1.10.0-SNAPSHOT
+ 1.10.1-SNAPSHOT
org.springframework.cloud
diff --git a/sop-example/sop-book/sop-book-web/pom.xml b/sop-example/sop-book/sop-book-web/pom.xml
index bf7655b4..1c6fd958 100644
--- a/sop-example/sop-book/sop-book-web/pom.xml
+++ b/sop-example/sop-book/sop-book-web/pom.xml
@@ -24,7 +24,7 @@
com.gitee.sop
sop-service-common
- 1.10.0-SNAPSHOT
+ 1.10.1-SNAPSHOT
com.gitee.sop
diff --git a/sop-example/sop-easyopen/pom.xml b/sop-example/sop-easyopen/pom.xml
index 176e1035..65ada284 100644
--- a/sop-example/sop-easyopen/pom.xml
+++ b/sop-example/sop-easyopen/pom.xml
@@ -29,7 +29,7 @@
com.gitee.sop
sop-service-common
- 1.10.0-SNAPSHOT
+ 1.10.1-SNAPSHOT
org.springframework.cloud
diff --git a/sop-example/sop-springmvc/pom.xml b/sop-example/sop-springmvc/pom.xml
index 497be639..ccbf4133 100644
--- a/sop-example/sop-springmvc/pom.xml
+++ b/sop-example/sop-springmvc/pom.xml
@@ -20,7 +20,7 @@
com.gitee.sop
sop-service-common
- 1.10.0-SNAPSHOT
+ 1.10.1-SNAPSHOT
diff --git a/sop-example/sop-story/sop-story-web/pom.xml b/sop-example/sop-story/sop-story-web/pom.xml
index 6a8d1d4a..383364d2 100644
--- a/sop-example/sop-story/sop-story-web/pom.xml
+++ b/sop-example/sop-story/sop-story-web/pom.xml
@@ -24,7 +24,7 @@
com.gitee.sop
sop-service-common
- 1.10.0-SNAPSHOT
+ 1.10.1-SNAPSHOT
com.gitee.sop
diff --git a/sop-gateway/pom.xml b/sop-gateway/pom.xml
index 54e19cc3..e16a116c 100644
--- a/sop-gateway/pom.xml
+++ b/sop-gateway/pom.xml
@@ -23,7 +23,7 @@
com.gitee.sop
sop-gateway-common
- 1.10.0-SNAPSHOT
+ 1.10.1-SNAPSHOT
@@ -31,6 +31,10 @@
org.springframework.cloud
spring-cloud-starter-netflix-zuul
+
+ org.springframework.retry
+ spring-retry
+
diff --git a/sop-gateway/src/main/resources/application-dev.yml b/sop-gateway/src/main/resources/application-dev.yml
index cbb973a9..cf1679e0 100644
--- a/sop-gateway/src/main/resources/application-dev.yml
+++ b/sop-gateway/src/main/resources/application-dev.yml
@@ -14,6 +14,11 @@ zuul:
# 不用改,如果要改,建议全局替换修改
secret: MZZOUSTua6LzApIWXCwEgbBmxSzpzC
+ribbon:
+ # 设置为true(默认false),则所有请求都重试,默认只支持get请求重试
+ # 请谨慎设置,因为post请求大多都是写入请求,如果要支持重试,确保服务的幂等性
+ OkToRetryOnAllOperations: false
+
# 注册中心,根据实际情况修改
eureka:
serverAddr: localhost:1111
diff --git a/sop-test/src/test/java/com/gitee/sop/AlipayClientPostTest.java b/sop-test/src/test/java/com/gitee/sop/AlipayClientPostTest.java
index b69d1fa8..3d0dac32 100644
--- a/sop-test/src/test/java/com/gitee/sop/AlipayClientPostTest.java
+++ b/sop-test/src/test/java/com/gitee/sop/AlipayClientPostTest.java
@@ -4,17 +4,10 @@ import com.alibaba.fastjson.JSON;
import com.gitee.sop.alipay.AlipaySignature;
import org.junit.Test;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.security.MessageDigest;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* 模仿支付宝客户端请求接口
@@ -71,10 +64,11 @@ public class AlipayClientPostTest extends TestBase {
params.put("sign", sign);
System.out.println("----------- 返回结果 -----------");
- String responseData = post(url, params);// 发送请求
+ String responseData = get(url, params);// 发送请求
System.out.println(responseData);
}
+
// 这个请求会路由到book服务
@Test
public void testPostBook() throws Exception {
@@ -150,4 +144,38 @@ public class AlipayClientPostTest extends TestBase {
System.out.println(responseData);
}
+ // 测试dubbo服务,book会调用story提供的服务。参见:DemoConsumerController.java
+ @Test
+ public void testDubboDemo() throws Exception {
+ // 公共请求参数
+ Map params = new HashMap();
+ params.put("app_id", appId);
+ params.put("method", "dubbo.story.get");
+ params.put("format", "json");
+ params.put("charset", "utf-8");
+ params.put("sign_type", "RSA2");
+ params.put("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+ params.put("version", "1.0");
+
+ // 业务参数
+ Map bizContent = new HashMap<>();
+ bizContent.put("id", "222");
+
+ params.put("biz_content", JSON.toJSONString(bizContent));
+
+ System.out.println("----------- 请求信息 -----------");
+ System.out.println("请求参数:" + buildParamQuery(params));
+ System.out.println("商户秘钥:" + privateKey);
+ String content = AlipaySignature.getSignContent(params);
+ System.out.println("待签名内容:" + content);
+ String sign = AlipaySignature.rsa256Sign(content, privateKey, "utf-8");
+ System.out.println("签名(sign):" + sign);
+
+ params.put("sign", sign);
+
+ System.out.println("----------- 返回结果 -----------");
+ String responseData = post(url, params);// 发送请求
+ System.out.println(responseData);
+ }
+
}
diff --git a/sop-test/src/test/java/com/gitee/sop/TestBase.java b/sop-test/src/test/java/com/gitee/sop/TestBase.java
index 6544a2ed..9b6201cf 100644
--- a/sop-test/src/test/java/com/gitee/sop/TestBase.java
+++ b/sop-test/src/test/java/com/gitee/sop/TestBase.java
@@ -5,6 +5,7 @@ import org.apache.commons.io.IOUtils;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
@@ -78,6 +79,61 @@ public class TestBase extends TestCase {
return null;
}
+ /**
+ * 发送get请求
+ * @param url
+ * @return JSON或者字符串
+ * @throws Exception
+ */
+ public static String get(String url, Map params) {
+ CloseableHttpClient client = null;
+ CloseableHttpResponse response = null;
+ try{
+ /**
+ * 创建一个httpclient对象
+ */
+ client = HttpClients.createDefault();
+
+ List nameValuePairs = params.entrySet()
+ .stream()
+ .map(entry -> new BasicNameValuePair(entry.getKey(), String.valueOf(entry.getValue())))
+ .collect(Collectors.toList());
+ /**
+ * 包装成一个Entity对象
+ */
+ UrlEncodedFormEntity entity = new UrlEncodedFormEntity(nameValuePairs, "UTF-8");
+ //参数转换为字符串
+ String paramsStr = EntityUtils.toString(entity);
+ url = url + "?" + paramsStr;
+ /**
+ * 创建一个post对象
+ */
+ HttpGet get = new HttpGet(url);
+
+ /**
+ * 执行post请求
+ */
+ response = client.execute(get);
+ /**
+ * 通过EntityUitls获取返回内容
+ */
+// Header[] allHeaders = response.getAllHeaders();
+// if (allHeaders != null && allHeaders.length > 0) {
+// System.out.println("----------- headers -----------");
+// for (Header allHeader : allHeaders) {
+// System.out.println(allHeader);
+// }
+// }
+ return EntityUtils.toString(response.getEntity(),"UTF-8");
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ IOUtils.closeQuietly(client);
+ IOUtils.closeQuietly(response);
+ }
+ return null;
+ }
+
protected String buildParamQuery(Map params) {
StringBuilder sb = new StringBuilder();
for (Map.Entry entry : params.entrySet()) {