在Java中的HTTP请求中添加HEADER

bil*_*ute 2 java sockets httprequest

我正在使用以下代码发送简单的HTTP请求:

try
{
    Socket  s = new Socket ();
    s.bind    (new InetSocketAddress (ipFrom, 0));
    s.connect (new InetSocketAddress (ipTo,   80), 1000);

    PrintWriter     writer = new PrintWriter    (s.getOutputStream ());
    BufferedReader  reader = new BufferedReader (new InputStreamReader (s.getInputStream ()));

    writer.print ("GET " + szUrl + " HTTP/1.0\r\n\r\n"); 
    writer.flush ();

    s     .close ();
    reader.close ();
    writer.close ();
}
Run Code Online (Sandbox Code Playgroud)

但是,正如您所看到的,我不发送自定义HEADER.我应该添加什么来发送自定义HEADER?

干杯,

Christophe OLIVIER

Boz*_*zho 6

不要尝试自己实现HTTP协议.

使用Apache的HttpComponents.

(或者它的旧版本和更容易使用的版本 - HttpClient)


Jhe*_*ico 5

当你写作

writer.print ("GET " + szUrl + " HTTP/1.0\r\n\r\n"); 
Run Code Online (Sandbox Code Playgroud)

\r\n\r\n位正在发送换行/回车以结束该行,然后发送另一个以指示没有更多的标题.这是HTTP和电子邮件格式的标准,即空行表示标题的结尾.为了添加额外的标题,您只需要在完成之前不发送该序列.您可以执行以下操作

writer.print ("GET " + szUrl + " HTTP/1.0\r\n"); 
writer.print ("header1: value1\r\n"); 
writer.print ("header2: value2\r\n"); 
writer.print ("header3: value3\r\n"); 
// end the header section
writer.print ("\r\n"); 
Run Code Online (Sandbox Code Playgroud)