1
1
package httpjson
2
2
3
3
import (
4
+ "bytes"
4
5
"errors"
5
6
"fmt"
6
7
"io/ioutil"
@@ -58,7 +59,7 @@ var sampleConfig = `
58
59
"http://localhost:9998/stats/",
59
60
]
60
61
61
- ### HTTP method to use (case-sensitive)
62
+ ### HTTP method to use: GET or POST (case-sensitive)
62
63
method = "GET"
63
64
64
65
### List of tag names to extract from top-level of JSON server response
@@ -166,7 +167,8 @@ func (h *HttpJson) gatherServer(
166
167
return nil
167
168
}
168
169
169
- // Sends an HTTP request to the server using the HttpJson object's HTTPClient
170
+ // Sends an HTTP request to the server using the HttpJson object's HTTPClient.
171
+ // This request can be either a GET or a POST.
170
172
// Parameters:
171
173
// serverURL: endpoint to send request to
172
174
//
@@ -181,13 +183,24 @@ func (h *HttpJson) sendRequest(serverURL string) (string, float64, error) {
181
183
}
182
184
183
185
params := url.Values {}
184
- for k , v := range h .Parameters {
185
- params .Add (k , v )
186
+ data := url.Values {}
187
+
188
+ switch {
189
+ case h .Method == "GET" :
190
+ requestURL .RawQuery = params .Encode ()
191
+ for k , v := range h .Parameters {
192
+ params .Add (k , v )
193
+ }
194
+
195
+ case h .Method == "POST" :
196
+ requestURL .RawQuery = ""
197
+ for k , v := range h .Parameters {
198
+ data .Add (k , v )
199
+ }
186
200
}
187
- requestURL .RawQuery = params .Encode ()
188
201
189
202
// Create + send request
190
- req , err := http .NewRequest (h .Method , requestURL .String (), nil )
203
+ req , err := http .NewRequest (h .Method , requestURL .String (), bytes . NewBufferString ( data . Encode ()) )
191
204
if err != nil {
192
205
return "" , - 1 , err
193
206
}
0 commit comments