【问题标题】:Receive data from web server从网络服务器接收数据
【发布时间】:2015-06-09 03:13:12
【问题描述】:

我在实现简单 Web 服务器的程序中遇到问题。

当我向网络服务器发送 HTTP 请求时,网络服务器向客户端发送 HTTP 代码,但我想接收 => 我有错误“连接已重置!)

clientSocket = new Socket("localhost", 1234);

BufferedWriter out = new BufferedWriter(
        new OutputStreamWriter(
                new BufferedOutputStream(clientSocket.getOutputStream()), "UTF-8")
);
out.write(OUTPUT_HEADERS+"GET /"+"home.html" + " HTTP/1.1\nHost:"+clientSocket.getLocalAddress() +"\nUser-agent: Mozilla/5.0\nAccept-language: fa");
out.flush();

System.out.println(" waiting...");

InputStreamReader isr=new InputStreamReader(clientSocket.getInputStream());
BufferedReader br=new BufferedReader(isr);
while (br.ready()) {                
    System.out.println(br.readLine());
}

【问题讨论】:

  • OUTPUT_HEADERS 包含什么内容?

标签: connection webserver client server


【解决方案1】:

根据 HTTP 1.1 规范:

http://www.w3.org/Protocols/HTTP/1.1/rfc2616bis/draft-lafon-rfc2616bis-03.html#request

请求和请求头需要用 CR/LF 终止。

即变化:

out.write(OUTPUT_HEADERS+"GET /"+"home.html" + " HTTP/1.1\nHost:"+clientSocket.getLocalAddress() +"\nUser-agent: Mozilla/5.0\nAccept-language: fa");
out.flush();

out.write(OUTPUT_HEADERS+"GET /"+"home.html" + " HTTP/1.1\r\nHost:"+clientSocket.getLocalAddress() +"\r\nUser-agent: Mozilla/5.0\r\nAccept-language: fa\r\n");
out.write("\r\n");
out.flush();

【讨论】:

  • 很高兴它有帮助。如果答案是您所需要的,您可以“接受”它。
猜你喜欢
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2012-08-17
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多