android httpurlconnection post 参数,android – 如何使用NameValuePair使用POST向HttpURLConnection添加参数...

我正在尝试使用HttpURLConnection进行POST(我需要以这种方式使用它,不能使用HttpPost)并且我想将参数添加到该连接中,例如

post.setEntity(new UrlEncodedFormEntity(nvp));

哪里

nvp = new ArrayList();

有一些数据存储在.我找不到如何将这个ArrayList添加到我的HttpURLConnection的方法,这是在这里:

HttpsURLConnection https = (HttpsURLConnection) url.openConnection();

https.setHostnameVerifier(DO_NOT_VERIFY);

http = https;

http.setRequestMethod("POST");

http.setDoInput(true);

http.setDoOutput(true);

这种尴尬的https和http组合的原因是不需要验证证书.但这不是问题,它可以很好地发布服务器.但是我需要用论据发帖.

有任何想法吗?

重复免责声明:

回到2012年,我不知道如何将参数插入到HTTP POST请求中.我在NameValuePair上,因为它是在教程中.这个问题可能看似重复,但是,我的2012年自己阅读了other问题并且它没有使用NameValuePair.事实上,它并没有解决我的问题.

解决方法:

您可以获取连接的输出流并将参数查询字符串写入其中.

URL url = new URL("http://yoururl.com");

HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();

conn.setReadTimeout(10000);

conn.setConnectTimeout(15000);

conn.setRequestMethod("POST");

conn.setDoInput(true);

conn.setDoOutput(true);

List params = new ArrayList();

params.add(new BasicNameValuePair("firstParam", paramValue1));

params.add(new BasicNameValuePair("secondParam", paramValue2));

params.add(new BasicNameValuePair("thirdParam", paramValue3));

OutputStream os = conn.getOutputStream();

BufferedWriter writer = new BufferedWriter(

new OutputStreamWriter(os, "UTF-8"));

writer.write(getQuery(params));

writer.flush();

writer.close();

os.close();

conn.connect();

private String getQuery(List params) throws UnsupportedEncodingException

{

StringBuilder result = new StringBuilder();

boolean first = true;

for (NameValuePair pair : params)

{

if (first)

first = false;

else

result.append("&");

result.append(URLEncoder.encode(pair.getName(), "UTF-8"));

result.append("=");

result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));

}

return result.toString();

}

标签:android,post,http-post,httpurlconnection,basicnamevaluepair

来源: https://codeday.me/bug/20190911/1802826.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用HttpURLConnection或者HttpClient来执行POST请求,将参数放在请求体中。以下是使用HttpURLConnection的示例代码: ```java URL url = new URL("http://example.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); String param1 = "value1"; String param2 = "value2"; String postData = "param1=" + URLEncoder.encode(param1, "UTF-8") + "&param2=" + URLEncoder.encode(param2, "UTF-8"); OutputStream outputStream = conn.getOutputStream(); outputStream.write(postData.getBytes("UTF-8")); outputStream.flush(); outputStream.close(); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStream inputStream = conn.getInputStream(); // 处理响应数据 inputStream.close(); } ``` 使用HttpClient的示例代码: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://example.com/api"); String param1 = "value1"; String param2 = "value2"; List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("param1", param1)); params.add(new BasicNameValuePair("param2", param2)); httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); CloseableHttpResponse response = httpClient.execute(httpPost); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { HttpEntity entity = response.getEntity(); // 处理响应数据 EntityUtils.consume(entity); } response.close(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值