在实际应用中,我们很少需要自己使用Java代码在流的层面上实现“客户端向服务器请求数据”的逻辑,探究一下,储备一下Java的基础知识。
1.读取服务器数据打印到控制台
public static void getRequestData(String requestUrlInString) {
InputStream inputStream = null;
HttpURLConnection urlConnection = null;
BufferedReader bufferedReader = null;
try {
URL requestUrl = new URL(requestUrlInString);
urlConnection = (HttpURLConnection) requestUrl.openConnection();
urlConnection.connect();
if (urlConnection.getResponseCode() == 200) {
inputStream = urlConnection.getInputStream();
bufferedReader = new BufferedReader(new InputStreamReader(
inputStream));
String responseResult = "";
//TODO 如果一次返回的数据过大,增大该参数
char[] msgInChar = new char[100000];
int perNum = 0;
int totalNum = 0;
//由于进行网络数据读取,会造成阻塞,不能够一次读取完毕,所以这里使用了一个循环
while (((perNum = bufferedReader.read(msgInChar, totalNum,
msgInChar.length - totalNum))) > 0) {
totalNum += perNum;
}
responseResult = String.valueOf(msgInChar);
System.err.println(responseResult);
System.out.println(totalNum);
bufferedReader.close();
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
2.将服务器相应数据保存到文件
public static void downloadFile(String filePath, String downloadUrl) {
File file = new File(filePath);
if (file.exists()) {
file.delete();
}
BufferedOutputStream fileOut = null;
InputStream inputStream = null;
HttpURLConnection urlConnection = null;
try {
URL requestUrl = new URL(downloadUrl);
urlConnection = (HttpURLConnection) requestUrl.openConnection();
urlConnection.connect();
} catch (Exception e) {
e.printStackTrace();
}
try {
fileOut = new BufferedOutputStream(new FileOutputStream(file));
inputStream = urlConnection.getInputStream();
byte buffer[] = new byte[1024 * 10];
int len = 0;
while ((len = (inputStream.read(buffer))) > 0) {
fileOut.write(buffer, 0, len);
}
fileOut.flush();
inputStream.close();
fileOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}
3.打印文件内容到控制台
public static void readFile(String filePath) {
File file = new File(filePath);
if (file.exists()) {
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
char[] msgInChar = new char[100000];
int charNum = bufferedReader.read(msgInChar);
String requestResult = String.valueOf(msgInChar);
System.err.println(requestResult);
System.out.println(charNum);
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.代码罗列
package com.test;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity {
public final static String request_url = "http://www.baidu.com";
public final static String file_name = ".0index_msg";
public static void main(String[] args) {
downloadFile(file_name, request_url);
readFile(file_name);
getRequestData(request_url);
}
public static void downloadFile(String filePath, String downloadUrl) {
File file = new File(filePath);
if (file.exists()) {
file.delete();
}
BufferedOutputStream fileOut = null;
InputStream inputStream = null;
HttpURLConnection urlConnection = null;
try {
URL requestUrl = new URL(downloadUrl);
urlConnection = (HttpURLConnection) requestUrl.openConnection();
urlConnection.connect();
} catch (Exception e) {
e.printStackTrace();
}
try {
fileOut = new BufferedOutputStream(new FileOutputStream(file));
inputStream = urlConnection.getInputStream();
byte buffer[] = new byte[1024 * 10];
int len = 0;
while ((len = (inputStream.read(buffer))) > 0) {
fileOut.write(buffer, 0, len);
}
fileOut.flush();
inputStream.close();
fileOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void getRequestData(String requestUrlInString) {
InputStream inputStream = null;
HttpURLConnection urlConnection = null;
BufferedReader bufferedReader = null;
try {
URL requestUrl = new URL(requestUrlInString);
urlConnection = (HttpURLConnection) requestUrl.openConnection();
urlConnection.connect();
if (urlConnection.getResponseCode() == 200) {
inputStream = urlConnection.getInputStream();
bufferedReader = new BufferedReader(new InputStreamReader(
inputStream));
String responseResult = "";
//TODO 如果一次返回的数据过大,增大该参数
char[] msgInChar = new char[100000];
int perNum = 0;
int totalNum = 0;
while (((perNum = bufferedReader.read(msgInChar, totalNum,
msgInChar.length - totalNum))) > 0) {
totalNum += perNum;
}
responseResult = String.valueOf(msgInChar);
System.err.println(responseResult);
System.out.println(totalNum);
bufferedReader.close();
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
// read data;convert2String???
public static void readFile(String filePath) {
File file = new File(filePath);
if (file.exists()) {
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
char[] msgInChar = new char[100000];
int charNum = bufferedReader.read(msgInChar);
String requestResult = String.valueOf(msgInChar);
System.err.println(requestResult);
System.out.println(charNum);
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}