废话没有,抓取post请求的数据
/**
* post请求
*
* @param urlStr
* 请求地址
* @return
* @throws MalformedURLException
* @throws IOException
* @throws UnsupportedEncodingException
*/
private String Capture(String urlStr) throws MalformedURLException, IOException, UnsupportedEncodingException {
URL url = new URL(urlStr);
/**
* 首先要和URL下的URLConnection对话。 URLConnection可以很容易的从URL得到。比如: // Using
* java.net.URL and //java.net.URLConnection
*/
URLConnection connection = url.openConnection();
/**
* 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。
* 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做:
*/
connection.setDoOutput(true);
/**
* 最后,为了得到OutputStream,简单起见,把它约束在Writer并且放入POST信息中,例如: ...
*/
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");
out.write("username=kevin&password=*********"); // post的关键所在!
// remember to clean up
out.flush();
out.close();
/**
* 这样就可以发送一个看起来象这样的POST: POST /jobsearch/jobsearch.cgi HTTP 1.0 ACCEPT:
* text/plain Content-type: application/x-www-form-urlencoded
* Content-length: 99 username=bob password=someword
*/
// 一旦发送成功,用以下方法就可以得到服务器的回应:
String sCurrentLine;
String sTotalString;
sCurrentLine = "";
sTotalString = "";
InputStream l_urlStream;
l_urlStream = connection.getInputStream();
// 传说中的三层包装阿! (需要把流先转码,防止中文乱码,如果是在读取的时候再转码也造成部分乱码)
BufferedReader l_reader = new BufferedReader(new InputStreamReader(l_urlStream, "utf-8"));
while ((sCurrentLine = l_reader.readLine()) != null) {
sTotalString += sCurrentLine + "\r\n";
}
return sTotalString;
}
第二种,抓取get请求的数据
private String getCapture(String urlStr) throws MalformedURLException, IOException, UnsupportedEncodingException {
URL realUrl = new URL(urlStr);
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 定义 BufferedReader输入流来读取URL的响应
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
String line;
String sTotalString = "";
while ((line = in.readLine()) != null) {
sTotalString += line + "\r\n";
}
return sTotalString;
}
很简单,需要注意的就是几个地方的转码问题。