Skip to content

Commit a29359c

Browse files
committed
jtool-httpclient update to 0.0.5
1 parent 0064924 commit a29359c

File tree

4 files changed

+131
-3
lines changed

4 files changed

+131
-3
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.jtool</groupId>
55
<artifactId>jtool-httpclient</artifactId>
6-
<version>0.0.4</version>
6+
<version>0.0.5</version>
77
<properties>
88
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
99
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package com.jtool.http;
2+
3+
import com.jtool.http.exception.RequestBeanErrorException;
4+
import org.apache.commons.beanutils.BeanUtils;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
import java.io.UnsupportedEncodingException;
9+
import java.lang.reflect.InvocationTargetException;
10+
import java.net.URLEncoder;
11+
import java.util.ArrayList;
12+
import java.util.List;
13+
import java.util.Map;
14+
15+
public class CommonCommand {
16+
17+
private static Logger log = LoggerFactory.getLogger(CommonCommand.class);
18+
19+
public static String readRequest(String host, String uri, Map<String, String> map) {
20+
21+
if(log.isDebugEnabled()) {
22+
log.debug("curl '" + host + uri + "?" + join(getParamStrings(map)) + "'");
23+
}
24+
25+
String content;
26+
27+
int i = 0;
28+
29+
do {
30+
content = WebGet.sent(host + uri, map);
31+
i++;
32+
} while ((content == null || content.equals("")) && i < 5);
33+
34+
log.debug("response: " + content);
35+
36+
return content;
37+
}
38+
39+
public static String writeRequest(String host, String uri, Map<String, String> map) {
40+
41+
if(log.isDebugEnabled()) {
42+
log.debug("curl -X POST -d \"" + join(getParamStrings(map)) + "\" " + host + uri);
43+
}
44+
45+
String content = WebPost.sent(host + uri, map);
46+
47+
log.debug("response: " + content);
48+
49+
return content;
50+
}
51+
52+
public static String readRequest(String host, String uri, Object param) {
53+
return readRequest(host, uri, convertBeanToRequestMap(param));
54+
}
55+
56+
public static String writeRequest(String host, String uri, Object param) {
57+
return writeRequest(host, uri, convertBeanToRequestMap(param));
58+
}
59+
60+
private static List<String> getParamStrings(Map<String, ?> paramsMap) {
61+
List<String> paramsList = new ArrayList<>();
62+
for(String key : paramsMap.keySet()){
63+
try {
64+
if(paramsMap.get(key) != null) {
65+
paramsList.add(URLEncoder.encode(key, "UTF-8") + "=" + URLEncoder.encode(paramsMap.get(key).toString(), "UTF-8"));
66+
}
67+
} catch (UnsupportedEncodingException e) {
68+
e.printStackTrace();
69+
}
70+
}
71+
return paramsList;
72+
}
73+
74+
private static Map<String, String> convertBeanToRequestMap(Object bean) {
75+
Map<String, String> params;
76+
try {
77+
params = BeanUtils.describe(bean);
78+
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
79+
throw new RequestBeanErrorException(e);
80+
}
81+
params.remove("class");
82+
return params;
83+
}
84+
85+
private static String join(final List<String> params){
86+
StringBuilder sb = new StringBuilder();
87+
for(int i = 0; i < params.size(); i++){
88+
if(i != 0) {
89+
sb.append("&");
90+
}
91+
sb.append(params.get(i));
92+
}
93+
return sb.toString();
94+
}
95+
}

src/test/java/com/jtool/http/AbstractRequestTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121

2222
public abstract class AbstractRequestTest {
2323

24-
private static final String paramValue = "blah";
25-
private static final String paramName = "username";
24+
protected static final String paramValue = "blah";
25+
protected static final String paramName = "username";
2626

2727
private Runner runner;
2828

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.jtool.http;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
import static com.jtool.http.RemoteTestUtils.port;
10+
import static com.jtool.http.RemoteTestUtils.root;
11+
12+
public class CommonCommandTest extends AbstractRequestTest {
13+
14+
@Test
15+
public void testReadRequest() {
16+
String result = CommonCommand.readRequest(root(port()), getWithParamsUri, makeParams());
17+
Assert.assertEquals(this.getWithParamResponse, result);
18+
}
19+
20+
@Test
21+
public void testWriteRequest() {
22+
String result = CommonCommand.writeRequest(root(port()), postUri, makeParams());
23+
Assert.assertEquals(this.postResponse, result);
24+
}
25+
26+
public Map<String, String> makeParams() {
27+
Map<String, String> params = new HashMap<>();
28+
params.put(paramName, paramValue);
29+
return params;
30+
}
31+
32+
}
33+

0 commit comments

Comments
 (0)