Skip to content

Commit 7e9c70a

Browse files
author
chenhuawei
committed
增加MinimalHttpAsyncClient及fast-json示例
1 parent 1fada78 commit 7e9c70a

5 files changed

Lines changed: 235 additions & 0 deletions

File tree

fast-json/pom.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>tutorial-java</artifactId>
7+
<groupId>biz.chenxu</groupId>
8+
<version>1.0.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>fast-json</artifactId>
13+
14+
<dependencies>
15+
<dependency>
16+
<groupId>com.alibaba</groupId>
17+
<artifactId>fastjson</artifactId>
18+
<version>1.2.31</version>
19+
</dependency>
20+
</dependencies>
21+
22+
</project>
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package biz.chenxu.tutorial;
2+
3+
import java.util.Date;
4+
import java.util.List;
5+
6+
public class ComplexType {
7+
8+
private String stringField;
9+
10+
private Date dateField;
11+
12+
private Integer intField;
13+
14+
private Double doubleField;
15+
16+
private Float floatField;
17+
18+
private List<ComplexType> complexTypeList;
19+
20+
private ComplexType[] complexArray;
21+
22+
public String getStringField() {
23+
return stringField;
24+
}
25+
26+
public void setStringField(String stringField) {
27+
this.stringField = stringField;
28+
}
29+
30+
public Date getDateField() {
31+
return dateField;
32+
}
33+
34+
public void setDateField(Date dateField) {
35+
this.dateField = dateField;
36+
}
37+
38+
public Integer getIntField() {
39+
return intField;
40+
}
41+
42+
public void setIntField(Integer intField) {
43+
this.intField = intField;
44+
}
45+
46+
public Double getDoubleField() {
47+
return doubleField;
48+
}
49+
50+
public void setDoubleField(Double doubleField) {
51+
this.doubleField = doubleField;
52+
}
53+
54+
public Float getFloatField() {
55+
return floatField;
56+
}
57+
58+
public void setFloatField(Float floatField) {
59+
this.floatField = floatField;
60+
}
61+
62+
public List<ComplexType> getComplexTypeList() {
63+
return complexTypeList;
64+
}
65+
66+
public void setComplexTypeList(List<ComplexType> complexTypeList) {
67+
this.complexTypeList = complexTypeList;
68+
}
69+
70+
public ComplexType[] getComplexArray() {
71+
return complexArray;
72+
}
73+
74+
public void setComplexArray(ComplexType[] complexArray) {
75+
this.complexArray = complexArray;
76+
}
77+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package biz.chenxu.tutorial;
2+
3+
import com.alibaba.fastjson.JSON;
4+
import com.alibaba.fastjson.JSONObject;
5+
import com.alibaba.fastjson.TypeReference;
6+
7+
import java.lang.reflect.Type;
8+
import java.util.ArrayList;
9+
import java.util.Arrays;
10+
import java.util.Date;
11+
import java.util.List;
12+
import java.util.stream.Collectors;
13+
14+
public class FastJsonApplication {
15+
16+
17+
18+
public static void main(String[] args) {
19+
String json = "{\"stringArray\": [\"abc\", \"def\"]}";
20+
JSONObject jsonObject = JSON.parseObject(json);
21+
String[] stringArray1 = jsonObject.getObject("stringArray", new String[]{}.getClass());
22+
System.out.println("method 1 " + Arrays.toString(stringArray1));
23+
24+
String[] stringArray2 = jsonObject.getObject("stringArray", String[].class);
25+
System.out.println("method 2 " + Arrays.toString(stringArray2));
26+
27+
String complexJson = createComplexTypeJson();
28+
Type type = new TypeReference<List<ComplexType>>(){}.getType();
29+
List<ComplexType> complexTypeList = JSONObject.parseObject(complexJson, type);
30+
31+
String complexTypeString = complexTypeList.stream().map(Object::toString)
32+
.collect(Collectors.joining(", "));
33+
34+
System.out.println(complexTypeString);
35+
}
36+
37+
private static ComplexType createComplexType(int i) {
38+
ComplexType complexType = new ComplexType();
39+
complexType.setStringField(String.format("stringFieldValue%d", i));
40+
complexType.setIntField(i + 1);
41+
complexType.setDoubleField(Double.valueOf(i + 2.0));
42+
complexType.setFloatField(Float.valueOf(i));
43+
complexType.setDateField(new Date());
44+
complexType.setComplexArray(new ComplexType[1]);
45+
complexType.setComplexTypeList(new ArrayList<>());
46+
return complexType;
47+
}
48+
49+
private static String createComplexTypeJson() {
50+
List<ComplexType> list = new ArrayList<>();
51+
for (int i = 0; i < 5; i++) {
52+
ComplexType complexType = createComplexType(i);
53+
list.add(complexType);
54+
}
55+
return JSON.toJSONString(list);
56+
}
57+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package biz.chenxu.tutorial;
2+
3+
import org.apache.commons.io.IOUtils;
4+
import org.apache.http.HttpHost;
5+
import org.apache.http.HttpResponse;
6+
import org.apache.http.client.methods.HttpPost;
7+
import org.apache.http.concurrent.FutureCallback;
8+
import org.apache.http.entity.ContentType;
9+
import org.apache.http.entity.StringEntity;
10+
import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
11+
import org.apache.http.impl.nio.client.HttpAsyncClients;
12+
import org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager;
13+
import org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor;
14+
import org.apache.http.impl.nio.reactor.IOReactorConfig;
15+
16+
import java.io.IOException;
17+
import java.util.Date;
18+
19+
public class MinimalHttpAsyncClientApplication {
20+
21+
static void sendRequest(CloseableHttpAsyncClient closeableHttpAsyncClient) {
22+
HttpHost httpHost = HttpHost.create("http://www.biadu.com");
23+
HttpPost postRequest = new HttpPost("/query");
24+
String data = "{\"keyword\":\"test\"}]}";
25+
StringEntity s = new StringEntity(data, ContentType.create("application/json", "utf-8"));
26+
postRequest.setEntity(s);
27+
closeableHttpAsyncClient.execute(httpHost, postRequest, new FutureCallback<HttpResponse>() {
28+
@Override
29+
public void completed(HttpResponse result) {
30+
try {
31+
String content = IOUtils.toString(result.getEntity().getContent(), "utf-8");
32+
System.out.println(new Date() + ", " + content);
33+
} catch (IOException e) {
34+
e.printStackTrace();
35+
}
36+
}
37+
38+
@Override
39+
public void failed(Exception ex) {
40+
ex.printStackTrace();
41+
}
42+
43+
@Override
44+
public void cancelled() {
45+
System.err.println("cancelled");
46+
}
47+
});
48+
}
49+
50+
public static void main(String[] args) throws Exception {
51+
52+
PoolingNHttpClientConnectionManager clientConnectionManager;
53+
CloseableHttpAsyncClient closeableHttpAsyncClient;
54+
55+
clientConnectionManager = new PoolingNHttpClientConnectionManager(new DefaultConnectingIOReactor(
56+
IOReactorConfig.custom().setConnectTimeout(30000).setSoTimeout(30000).build()
57+
));
58+
closeableHttpAsyncClient = HttpAsyncClients.createMinimal(clientConnectionManager, false);
59+
60+
closeableHttpAsyncClient.start();
61+
62+
int counter = 3;
63+
while (--counter >= 0) {
64+
sendRequest(closeableHttpAsyncClient);
65+
try {
66+
Thread.sleep(1000);
67+
} catch (InterruptedException e) {
68+
e.printStackTrace();
69+
}
70+
}
71+
72+
try {
73+
closeableHttpAsyncClient.close();
74+
} catch (IOException e) {
75+
e.printStackTrace();
76+
}
77+
}
78+
}

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
<modules>
1313
<module>http-async-client</module>
14+
<module>fast-json</module>
1415
</modules>
1516

1617
<properties>

0 commit comments

Comments
 (0)