繁体   English   中英

HTTP标头变为小写2

[英]HTTP headers became lowercased 2

我需要通过http post发送UPPERcased标头。 这里描述了故事的第一部分。 现在它的时间到了。 :)

Socket s = new Socket(InetAddress.getByName("localhost"), 8080);
PrintWriter pw = new PrintWriter(s.getOutputStream());
//      PrintStream pw = System.out;
pw.println("POST /test-servlet/TestServlet HTTP/1.0");
String params = "key1=value1&key2=value2";
pw.println("accept = text/xml");
pw.println("accept-language: ru");
pw.println("SOAPAction: requestCreditBureau");
pw.println("eif: 3");
pw.println("host: localhost");
pw.println("content-length: " + params.getBytes().length);
pw.println();
pw.println(params);
pw.println();
pw.flush();

BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String t;
while((t = br.readLine()) != null) System.out.println(t);
br.close();

这里有两个问题。

  1. 没用 :)服务器的servlet接收:

工作流程= TSM \\ soapaction = requestCreditBureau eif = 3

  1. 服务器上的HttpServletRequest中没有参数,只有标头。

println()方法将使用系统行分隔符发送换行符。 HTTP将\\r\\n的严格用法定义为行分隔符。 因此,您应该对换行符进行硬编码:

pw.print("SOAPAction: requestCreditBureau\r\n");
pw.print("eif: 3\r\n");
pw.print("host: localhost\r\n");
pw.print("content-length: " + params.getBytes().length + "\r\n");
pw.print("\r\n");

考虑使用java.net.HttpURLConnection而不是自己实现HTTP协议。

谢谢! 问题是我用过tomcat7。 使用码头没有这种问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM