Yes. But code should NOT rely that it will get CRLFs from the client. For instance some of perl libraries, lib-www and MIME::Tools, are breaking the spec and are sending just LFs.
-----Original Message----- From: Tom Jordahl [mailto:[EMAIL PROTECTED]] Sent: Tuesday, June 04, 2002 11:20 AM To: '[EMAIL PROTECTED]' Subject: RE: [axis] LF vs CR/LF in axis generated code You always need to use \r\n in HTTP code, which is what SimpleAxisServer is trying to do. -- Tom Jordahl Macromedia -----Original Message----- From: Richard Sitze [mailto:[EMAIL PROTECTED]] Sent: Tuesday, June 04, 2002 10:37 AM To: [EMAIL PROTECTED] Subject: [axis] LF vs CR/LF in axis generated code Can someone give us a quick overview of when it is appropriate to HARDCODE CR/LF or LF in generated output, versus when we should use the system "line.separator" property? I'd be happy to summarize the replies and update the developers guide. <ras> ******************************************* Richard A. Sitze [EMAIL PROTECTED] CORBA Interoperability & WebServices IBM WebSphere Development [EMAIL PROTECTED] [EMAIL PROTECTED] 06/03/2002 08:18 PM Please respond to axis-dev To: [EMAIL PROTECTED] cc: Subject: cvs commit: xml-axis/java/src/org/apache/axis/transport/http SimpleAxisServer.java tomj 2002/06/03 18:18:29 Modified: java/src/org/apache/axis/transport/http SimpleAxisServer.java Log: Fix interop problems: - Return the correct cr/lf end of line characters. - Set the correct hostname, not a hardwired 'localhost', in the Message context. Revision Changes Path 1.59 +13 -8 xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer.java Index: SimpleAxisServer.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/SimpleAxisServer. java,v retrieving revision 1.58 retrieving revision 1.59 diff -u -r1.58 -r1.59 --- SimpleAxisServer.java 29 May 2002 14:30:01 -0000 1.58 +++ SimpleAxisServer.java 4 Jun 2002 01:18:28 -0000 1.59 @@ -136,16 +136,16 @@ // Standard MIME headers for XML payload private static byte XML_MIME_STUFF[] = - ( "\nContent-Type: text/xml; charset=utf-8\n" + + ( "\r\nContent-Type: text/xml; charset=utf-8\r\n" + "Content-Length: ").getBytes(); // Standard MIME headers for HTML payload private static byte HTML_MIME_STUFF[] = - ( "\nContent-Type: text/html; charset=utf-8\n" + + ( "\r\nContent-Type: text/html; charset=utf-8\r\n" + "Content-Length: ").getBytes(); // Mime/Content separator - private static byte SEPARATOR[] = "\n\n".getBytes(); + private static byte SEPARATOR[] = "\r\n\r\n".getBytes(); // Tiddly little response private static final String responseStr = @@ -274,8 +274,13 @@ msgContext.setProperty(Constants.MC_JWS_CLASSDIR, "jwsClasses"); + // FIXME - we need to get our hostname or IP + // This doesn't work (returns 0.0.0.0). + String hostname = socket.getInetAddress().getHostName(); + //String hostname = "localhost"; + // !!! Fix string concatenation - String url = "http://localhost:" + + String url = "http://" + hostname + ":" + this.getServerSocket().getLocalPort() + "/" + fileName.toString(); msgContext.setProperty(MessageContext.TRANS_URL, url); @@ -437,8 +442,8 @@ out.write(HTTP); out.write(status); //out.write(XML_MIME_STUFF); - out.write(("\n" + HTTPConstants.HEADER_CONTENT_TYPE + ": " + responseMsg.getContentType()).getBytes()); - out.write(("\n" + HTTPConstants.HEADER_CONTENT_LENGTH + ": " + responseMsg.getContentLength()).getBytes()); + out.write(("\r\n" + HTTPConstants.HEADER_CONTENT_TYPE + ": " + responseMsg.getContentType()).getBytes()); + out.write(("\r\n" + HTTPConstants.HEADER_CONTENT_LENGTH + ": " + responseMsg.getContentLength()).getBytes()); // putInt(out, response.length); if (doSessions && null != cooky && 0 != cooky.trim().length()) { @@ -446,9 +451,9 @@ // don't sweat efficiency *too* badly // optimize at will StringBuffer cookieOut = new StringBuffer(); - cookieOut.append("\nSet-Cookie: ") + cookieOut.append("\r\nSet-Cookie: ") .append(cooky) - .append("\nSet-Cookie2: ") + .append("\r\nSet-Cookie2: ") .append(cooky); // OH, THE HUMILITY! yes this is inefficient. out.write(cookieOut.toString().getBytes());