From ac822316ceb6f9a709901870bd1e2dc2974285e5 Mon Sep 17 00:00:00 2001 From: megacz Date: Fri, 30 Jan 2004 06:50:17 +0000 Subject: [PATCH] 2002/08/24 22:45:14 darcs-hash:20040130065017-2ba56-bfe0a69cf24f4fb36012db4675962e29e1ddcc1d.gz --- CHANGES | 3 +++ src/org/xwt/HTTP.java | 2 +- src/org/xwt/SOAP.java | 36 ++++++++++++++++++------------------ 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/CHANGES b/CHANGES index 40149fc..18039a5 100644 --- a/CHANGES +++ b/CHANGES @@ -388,4 +388,7 @@ 21-Aug megacz PalmOS.java, PalmOS.xml, jump.jar: began work on PalmOS port. +24-Aug megacz HTTP.java, SOAP.java: fixed bug which caused + miscalculation of the Content-Length header. + diff --git a/src/org/xwt/HTTP.java b/src/org/xwt/HTTP.java index 258dc75..da3425e 100644 --- a/src/org/xwt/HTTP.java +++ b/src/org/xwt/HTTP.java @@ -363,7 +363,7 @@ public class HTTP { PrintWriter pw = new PrintWriter(new OutputStreamWriter(sock.getOutputStream())); if (content != null) { pw.print("POST " + path + " HTTP/1.1\r\n"); - pw.print("Content-Length: " + content.length() + "\r\n"); + pw.print("Content-Length: " + (content.length() - content.indexOf("\r\n\r\n") - 4) + "\r\n"); if (contentType != null) pw.print("Content-Type: " + contentType + "\r\n"); } else { pw.print("GET " + path + " HTTP/1.1\r\n"); diff --git a/src/org/xwt/SOAP.java b/src/org/xwt/SOAP.java index 3c3ed7d..1a279f4 100644 --- a/src/org/xwt/SOAP.java +++ b/src/org/xwt/SOAP.java @@ -165,21 +165,21 @@ class SOAP extends XMLRPC { if ((double)((Number)o).intValue() == ((Number)o).doubleValue()) { sb.append(" <" + name + " xsi:type=\"xsd:int\">"); sb.append(((Number)o).intValue()); - sb.append("\n"); + sb.append("\r\n"); } else { sb.append(" <" + name + " xsi:type=\"xsd:double\">"); sb.append(o); - sb.append("\n"); + sb.append("\r\n"); } } else if (o instanceof Boolean) { sb.append(" <" + name + " xsi:type=\"xsd:boolean\">"); sb.append(((Boolean)o).booleanValue() ? "true" : "false"); - sb.append("\n"); + sb.append("\r\n"); } else if (o instanceof ByteStream) { try { - sb.append(" <" + name + " xsi:type=\"SOAP-ENC:base64\">\n"); + sb.append(" <" + name + " xsi:type=\"SOAP-ENC:base64\">\r\n"); InputStream is = ((ByteStream)o).getInputStream(); byte[] buf = new byte[54]; while(true) { @@ -192,10 +192,10 @@ class SOAP extends XMLRPC { } sb.append(" "); sb.append(new String(Base64.encode(writebuf))); - sb.append("\n"); + sb.append("\r\n"); } sb.append(((Boolean)o).booleanValue() ? "1" : "0"); - sb.append("\n"); + sb.append("\r\n"); } catch (IOException e) { if (Log.on) Log.log(this, "caught IOException while attempting to send a ByteStream via SOAP"); if (Log.on) Log.log(this, e); @@ -219,14 +219,14 @@ class SOAP extends XMLRPC { i = oldi = i + 1; } } - sb.append("\n"); + sb.append("\r\n"); } else if (o instanceof NativeArray) { NativeArray na = (NativeArray)o; sb.append(" <" + name + " SOAP-ENC:arrayType=\"xsd:ur-type[" + na.jsGet_length() + "]\">"); for(int i=0; i\n"); + sb.append("\r\n"); } else if (o instanceof Scriptable && !(o instanceof Undefined)) { Scriptable s = (Scriptable)o; @@ -234,7 +234,7 @@ class SOAP extends XMLRPC { Object[] ids = s.getIds(); for(int i=0; i\n"); + sb.append("\r\n"); } } @@ -242,23 +242,23 @@ class SOAP extends XMLRPC { // build up the request StringBuffer content = new StringBuffer(); content.append("SOAPAction: " + action + "\r\n\r\n"); - content.append("\n"); - content.append("\n"); - content.append("\n"); + content.append("\r\n"); + content.append("\r\n"); + content.append("\r\n"); content.append(" <"); content.append(methodname); content.append(nameSpace != null ? " xmlns=\"" + nameSpace + "\"" : ""); - content.append(">\n"); + content.append(">\r\n"); if (args.length > 0) { Object[] o = ((Scriptable)args[0]).getIds(); for(int i=0; i"); + content.append(" \r\n"); return content.toString(); } -- 1.7.10.4