如果我想发送http请求,我应该用Java中的outputstream编写什么?
我有这段代码,假设我在一个网站上填写表单并想要提交它,我如何找到要提交的键和值?我会更好地解释,我有这段代码,它应该发送一个HTTP POST请求,但我不知道用什么来代替“key1”和“value1”,同样的还有“key2”和“value2”: 你能给我一个这个代码的工作副本的示例站点吗?(键1/键2和值1/value2替换为有效的东西)如果我想发送http请求,我应该用Java中的outputstream编写什么?,java,url,post,request,httpurlconnection,Java,Url,Post,Request,Httpurlconnection,我有这段代码,假设我在一个网站上填写表单并想要提交它,我如何找到要提交的键和值?我会更好地解释,我有这段代码,它应该发送一个HTTP POST请求,但我不知道用什么来代替“key1”和“value1”,同样的还有“key2”和“value2”: 你能给我一个这个代码的工作副本的示例站点吗?(键1/键2和值1/value2替换为有效的东西) 如果效果更好的话,你可以添加更多的键/值,我只是不知道如何为每个不同的站点填充内容 键是html表单输入元素的名称属性。这些值将是您想要设置的值。您不想使用H
如果效果更好的话,你可以添加更多的键/值,我只是不知道如何为每个不同的站点填充内容 键是html表单输入元素的名称属性。这些值将是您想要设置的值。您不想使用HTTP库的原因是什么?我不想使用任何外部库,如果这正是您所说的,那是因为我非常确定,如果我只知道应该在字符串“data”中插入什么,这段代码就可以工作。为什么您不想使用经过测试的,从其他地方优化的etc代码?您是否将此策略应用于所有问题?有很多非常好的Java库——避免“这里没有发明”综合症。如果我使用一个外部库,使我的问题非常容易解决,这不会是一个很大的实践,不是吗?此外,库不是问题所在,属性才是问题所在。
public String sendPostRequest(String url) {
StringBuffer sb = null;
try {
String data = URLEncoder.encode("key1", "UTF-8") + "="
+ URLEncoder.encode("value1", "UTF-8");
data += "&" + URLEncoder.encode("key2", "UTF-8") + "="
+ URLEncoder.encode("value2", "UTF-8");
URL requestUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) requestUrl
.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStreamWriter osw = new OutputStreamWriter(
conn.getOutputStream());
osw.write(data);
osw.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String in = "";
sb = new StringBuffer();
while ((in = br.readLine()) != null) {
sb.append(in + "\n");
}
osw.close();
br.close();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb.toString();
}