gpt4 book ai didi

android - 如何使用 POST 使用 NameValuePair 将参数添加到 HttpURLConnection

转载 作者:IT老高 更新时间:2023-10-28 12:51:18 27 4
gpt4 key购买 nike

我正在尝试使用 HttpURLConnection 进行 POST(我需要这样使用它,不能使用 HttpPost)并且我'想为该连接添加参数,例如

post.setEntity(new UrlEncodedFormEntity(nvp));

在哪里

nvp = new ArrayList<NameValuePair>();

存储了一些数据。我找不到如何将这个 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 年的 self 读到 other 问题,它是 NOT 使用 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<NameValuePair> params = new ArrayList<NameValuePair>();
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<NameValuePair> 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 使用 NameValuePair 将参数添加到 HttpURLConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9767952/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com