试试这个...
Map params = new LinkedHashMap<>();
params.put("firstName", "Gena");
params.put("lastName", "Bukin");
JSONObject jsonObject = POST("https://safe-citadel-91138.herokuapp.com/questions", params);
/**
* Method allows to HTTP POST request to the server to send data to a specified resource
* @param serverURL URL of the API to be requested
* @param params parameter that are to be send in the "body" of the request Ex: parameter=value&also=another
* returns response as a JSON object
*/
public JSONObject POST(String serverURL, Map params) {
JSONObject jsonObject = null;
try {
URL url = new URL(serverURL);
Log.e(TAG, params.toString());
StringBuilder postData = new StringBuilder();
for (Map.Entry param : params.entrySet()) {
if (postData.length() != 0) postData.append('&');
postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));
postData.append('=');
postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
}
Log.e("POST", serverURL + ":" + params.toString());
byte[] postDataBytes = postData.toString().getBytes("UTF-8");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
connection.setRequestMethod("POST");
connection.setConnectTimeout(5000);
connection.setUseCaches(false);
connection.setDoOutput(true);
connection.getOutputStream().write(postDataBytes);
connection.connect();
int statusCode = connection.getResponseCode();
if (statusCode == 200) {
sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
}
jsonObject = new JSONObject(sb.toString());
} catch (Exception e) {
//e.printStackTrace();
}
return jsonObject;
}