0
我正在嘗試使用套接字進行HTTPClient連接,但無法弄清楚。當我運行代碼時,我收到以下消息;Java中的HTTP客戶端連接
HTTP/1.1 400 Bad Request
Date: Sun, 22 Apr 2012 13:17:12 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
Content-Length: 317
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at pvs.ifi.uni-heidelberg.de Port 80</address>
</body></html>
的代碼是在這裏:
import java.net.*;
import java.io.*;
public class a1 {
public static void main (String[] args) throws IOException {
Socket s = null;
try {
String host = "host1";
String file = "file1";
int port = 80;
在這裏,我創建套接字:
s = new Socket(host, port);
OutputStream out = s.getOutputStream();
PrintWriter outw = new PrintWriter(out, false);
outw.print("GET " + file + " HTTP/1.1\r\n");
outw.print("Accept: text/plain, text/html, text/*\r\n");
outw.print("\r\n");
outw.flush();
InputStream in = s.getInputStream();
InputStreamReader inr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(inr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
catch (UnknownHostException e) {}
catch (IOException e) {}
if (s != null) {
try {
s.close();
}
catch (IOException ioEx) {}
}
}
}
任何幫助將不勝感激。謝謝。
試試這個:http://stackoverflow.com/questions/1359689/how-to-send-http-request-in-java/1359700#1359700 – duffymo 2012-04-22 13:26:04
或者你可以使用Apache Commons http。 – bmargulies 2012-04-22 13:26:41
如果你真的想編寫自己的HTTP客戶端(如果這不僅僅是爲了好玩,那麼不要看上面的註釋),你應該首先嚐試HTTP 1.0並在請求的路徑之前添加一個斜槓:' 「GET /」+文件+「HTTP/1.0 \ r \ n」'。 – 2012-04-22 13:32:23