使用Java将HTTP请求GET/POST发送到表单?
所以我有了这段代码,我让它开始工作,现在它基本上允许我向几乎任何我想要的外部网站发送http post和获取请求,除非元素不包含name属性。下面是一个例子:
这是Java代码:
public static String sendPostRequest(String url) {
StringBuffer sb = null;
try {
String data = URLEncoder.encode("user", "UTF-8") + "="
+ URLEncoder.encode("myUserName", "UTF-8") + "&"
+ URLEncoder.encode("submit", "UTF-8") + "="
+ URLEncoder.encode("Submit", "UTF-8");
URL requestUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) requestUrl
.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("GET");
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();
}
这是我试图向其发送请求的表单(这是w3schools网站上的表单,这是网站http://www.w3schools.com/html/html_forms.asp):
<form name="input0" target="_blank" action="html_form_action.asp" method="get">
Username:
<input type="text" name="user" size="20" />
<input type="submit" value="Submit" />
</form>
现在,由于Submit按钮没有name属性,我无法向它发送正确的HTTPGET/Post请求(我知道在这种情况下它是一个Get方法)。我应该用什么替换字符串数据(正确的键/值),以便它实际向该表单发送请求
# 1 楼答案
我正在使用HttpClient生成http请求
HttpClient是开源apache项目。您可以获得广泛的代码。 HttpClient版本4.1是一套很好的Http api
HttpClient Learning Artical
# 2 楼答案
您根本不会将
submit
部分添加到数据中。这只是为了让浏览器知道“提交”按钮触发操作。请注意新打开的站点的URL的外观:http://www.w3schools.com/html/html_form_action.asp?user=myUserName-nosubmit
部分在这里。因此data
代码应该如下所示:# 3 楼答案
//发出http get请求
//安装头(服务器理解某些浏览器抛出的请求)
httpPost。setHeader(“Referer”,resultur+resulturasp)
//设置参数
//发送请求
//获取响应体
您还可以通过java代码获取标题、http参数、cookies、管理会话…:)
# 4 楼答案
我有一个ClientHttpRequest类,它可以处理所有的多部分、文件等,还可以选择进度跟踪和取消。它已经存在大约10年了。使用起来非常简单。 现在也有了Scala版本https://github.com/vpatryshev/ScalaKittens/blob/master/src/main/scala/scalakittens/ClientHttpRequest.scala
http://myjavatools.com/