[英]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();
这里有两个问题。
工作流程= TSM \\ soapaction = requestCreditBureau eif = 3
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.