我想在我的Android应用程序上发送获取消息。在我想收到200个好的回复之后。但是我没有完成。我收到408要求超时或什么都没有。你能帮我吗?
String requestmsg = "GET / HTTP/1.1rn";
requestmsg += "Host: www.ktu.edu.trrn";
requestmsg += "Connection: keep-alivern";
requestmsg += "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8rn";
requestmsg += "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW 64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36rn";
requestmsg += "Accept-Encoding: gzip, deflate, sdchrn";
requestmsg += "Accept-Language: en-US,en;q=0.8,en-GB;q=0.6rn";
DataOutputStream dos = null;
BufferedReader dis = null;
try {
Log.d("ClientActivity", "Connecting...");
String addr = InetAddress.getByName("www.ktu.edu.tr").getHostAddress().toString();
Socket socket = new Socket(addr, 80);
String data = "";
try {
Log.d("ClientActivity", "C: Sending command.");
dos = new DataOutputStream(socket.getOutputStream());
dis = new BufferedReader(new InputStreamReader(socket.getInputStream()));
dos.write(requestmsg.getBytes());
Log.i("ClientActivity", "RequestMsg Sent");
StringBuilder sb = new StringBuilder();
while ((data = dis.readLine()) != null) {
sb.append(data);
}
Log.i("ClientActivity", "C: Sent.");
Log.i("ClientActivity", "C: Received " + sb.toString());
} catch (Exception e) {
Log.e("ClientActivity", "S: Error", e);
}
socket.close();
Log.d("ClientActivity", "C: Closed.");
} catch (Exception e) {
Log.e("ClientActivity", "C: Error", e);
}
- 您缺少
Content-Length
标头 - 您在请求标题末尾缺少空白行
- 您没有根据其内容长度或分支正确阅读响应。
简而言之,不要自己实施HTTP。使用URL
和HttpURLConnection
。它会照顾所有这些细节,还有更多。