我使用这个以下代码发送简单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 ();
}

然而,正如你可以看到,我不要发送的定制标题。什么我应该添加到发送的定制的头?

干杯,

克里斯托夫*奥利维尔

有帮助吗?

解决方案

当你写

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

\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"); 

其他提示

不要试图自己实现HTTP协议。

被Apache使用 HttpComponents

(或它的旧的和更容易一些使用版本 - HttpClient的

即使我建议尝试HttpComponents如提及Bozho代替自己实现HTTP,这将是添加自定义标题的方式:

 writer.print ("GET " + szUrl + " HTTP/1.0\r\n"); 
 writer.print ("X-MyOwnHeader: SomeValue\r\n");

你应该使用的课程已经准备好要用于http连接,喜欢 HTTPUrlConnection 这是一个childreon的 UrlConnection 并具有这方法

void setRequestProperty(String key, String value)

那应该是用于设参数的要求(喜欢 领域)..检查 在这里, 供参考

如果你非得用手工做你自己就必须遵循它自己的行头每次这种格式。

  

名:值

看到HTTP规范的报头格式。

的http:// WWW .w3.org /协议/ HTTP / 1.0 /草案-IETF-HTTP-spec.html#消息头

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top