android工程post无响应,无法在Java中发送正确的POST请求(Android Studio)

试试这个...

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值