导入包:
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.Socket;
import java.net.URL;
import java.util.List;
/**
* 通过socket请求
*
* @param urlString
* @param method
* @return
* @throws IOException
*/
public static String getResponseContentBySocket(String urlString, String method) throws MalformedURLException {
String responseBody = "";
URL url = new URL(urlString);
String host = url.getHost();
String path = url.getPath() != null ?
(url.getPath() + (url.getQuery() != null ? ("?" + url.getQuery()) : "")) : "/";
int port = 80;
if (url.getPort() > 0) {
port = url.getPort();
}
String post = url.getQuery() != null ? url.getQuery() : "";
StringBuffer out = new StringBuffer();
String cookie = "a=1; b=2";
if (method != null && method.equalsIgnoreCase("POST")) {
out.append("POST ").append(path).append(" HTTP/1.0\r\n");
out.append("Accept: */*\r\n");
out.append("Accept-Language: zh-CN,zh;q=0.8,en\r\n");
out.append("Content-Type: application/x-www-form-urlencoded\r\n");
out.append("User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36\r\n");
out.append("Host: ").append(host).append("\r\n");
out.append("Content-Length: ").append(post.length()).append("\r\n");
out.append("Connection: Close\r\n");
out.append("Cache-Control: no-cache\r\n");
out.append("Cookie: ").append(cookie).append("\r\n\r\n");
out.append(post);
} else {
out.append("GET ").append(path).append(" HTTP/1.0\r\n");
out.append("Accept: */*\r\n");
//out .= "Referer: $boardurl\r\n";
out.append("Accept-Language: zh-CN,zh;q=0.8,en\r\n");
out.append("User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36\r\n");
out.append("Host: ").append(host).append("\r\n");
out.append("Connection: Close\r\n");
out.append("Cookie: ").append(cookie).append("\r\n\r\n");
}
Socket socket = null;
try {
socket = new Socket(host, 80);
if (!socket.isConnected())
return responseBody;
OutputStream os = socket.getOutputStream();
os.write(out.toString().getBytes());
InputStream ins = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
while (true) {
String header = reader.readLine();
if (header == null || header.equals("") || header == "\r\n" || header == "\n") {
break;
}
}
String line;
while ((line = reader.readLine()) != null) {
responseBody += line;
}
} catch (IOException e) {
logger.error(e);
} finally {
try {
if (socket != null && !socket.isClosed()) {
socket.close();
}
} catch (IOException e) {
logger.error(e);
}
}
return responseBody;
}