题
我使用这个以下代码发送简单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");
其他提示
即使我建议尝试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)
那应该是用于设参数的要求(喜欢 头 领域)..检查 在这里, 供参考
您还可以看到的URLConnection。
HTTP://java.sun的.com / J2SE / 1.4.2 /文档/ API / JAVA /净/ URLConnection.html
如果你非得用手工做你自己就必须遵循它自己的行头每次这种格式。
名:值
看到HTTP规范的报头格式。
的http:// WWW .w3.org /协议/ HTTP / 1.0 /草案-IETF-HTTP-spec.html#消息头
不隶属于 StackOverflow