-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJsonBody.java
122 lines (73 loc) · 2.61 KB
/
JsonBody.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import java.io.*;
/**
* This class build and set a JSON as requset body.
* for use : first call {@link JsonBody#build()} then call {@link JsonBody#set(OutputStream)}.
* Use {@link JsonBody#getContentType()} and {@link JsonBody#getContentLength()} to set the Content headers
*
*
* @author Mohammad Mahdi Malmasi
* @version 0.2.5
*/
public class JsonBody extends RequestBody
{
/* Fields */
// Json String (body of request)
private String jsonBodyString = null;
private static final long serialVersionUID = 2285484035553569407L;
/* Constructors */
/**
* Create a new Json with given {@code String}.
* Your given {@code String} should be in this format: {"key": "value", "kay1": "value1", ...}
*
*
* @param jsonBodyString : a {@code String} of Json datas to send it as request body
*/
public JsonBody(String jsonBodyString)
{
this.jsonBodyString = jsonBodyString;
}
/* Methods */
/**
* This method check the given Json and terminates the currently running JVM if the given Json has some problems
*/
public void build()
{
if (jsonBodyString == null)
error();
if (!(jsonBodyString.contains("{") && jsonBodyString.contains("}")))
error();
jsonBodyString = jsonBodyString.replaceAll(" ", "");
jsonBodyString = jsonBodyString.substring(1, jsonBodyString.length()-1);
String[] holdKeyValues = jsonBodyString.split(",");
String key = null, value = null;
for (String pair : holdKeyValues)
{
try
{
key = pair.substring(0, pair.indexOf(':'));
value = pair.substring(pair.indexOf(':')+1);
if (value.length() == 0 || key.length() == 0)
error();
if (key.charAt(0) != '\"' || key.charAt(key.length()-1) != '\"')
error();
if (value.charAt(0) != '\"' || value.charAt(value.length()-1) != '\"')
error();
}
catch (IndexOutOfBoundsException e) { error(); }
}
jsonBodyString = "{" + jsonBodyString + "}";
}
/**
* This method set the given Json as requset body
*/
public void set(OutputStream connectionOutputStream) throws IOException
{
byte[] input = jsonBodyString.getBytes();
super.Content_Length = input.length;
connectionOutputStream.write(input);
}
public String getContentType()
{
return "application/json";
}
}