problem with Reply.setStream(InputStream)

I changed the following code a little bit and couldn't understand the behavior 
(the code was posted before and worked all right without the change):

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
resource for jigsaw:

 //ReverseString.java:
package w3c.jigsaw.contrib;

import java.util.*;

import w3c.jigsaw.http.*;
import w3c.jigsaw.forms.*;

public class ReverseString extends PostableResource {

        public Reply handle(Request request, URLDecoder data) 
                throws HTTPException
        {
                String str = data.getValue("string");
                if ((str == null) || str.equals("")) {
                    Reply reply = request.makeReply(HTTP.OK);
                    reply.setContent("reverse=[]");
                    return reply;
                }
                // Reverse the string (should be some other method, etc)
                // You could ameliroate this alot, but that's not the point
                char cs[] = new char[str.length()];
                str.getChars(0, cs.length, cs, 0);
                char cr[] = new char[cs.length];       
                for(int i = 0 ; i < cs.length; i++)
                    cr[cs.length-1-i] = cs[i];
                // Emit reply:
                Reply reply = request.makeReply(HTTP.OK);
---------->     reply.setContent("reverse=["+new String(cr)+"]");
                return reply;
        }

        public ReverseString() {        
        }
}

*** the above is original code. If I delete line pointed by "--->" and put in 
these lines: 
	FileInputStream f = new FileInputStream("tmpfile");
	reply.setStream(f);
Of course it no longer does reverse string. The new resource after the change 
takes a request and then send the content of tmpfile back to the client. I 
tested the new resource with netscape by http://.../reverse?string="jjj"
and it worked all right. But if I use the following client program (which I 
didn't change and worked great with the original resource), an Exception will 
be thrown at the line pointed by "------------>", i.e., 
connection.getInputStream().


on the client side:

//ReverseTest.java
               import java.io.*;
               import java.net.*;

               public class ReverseTest {
                   public static void main(String args[]) {
                       try {
                           if (args.length != 1) {
                               System.err.println("Usage:  java
ReverseTest string_to_reverse");
                               System.exit(1);
                           }
                           String stringToReverse =
URLEncoder.encode(args[0]);

// Put you URL here !!!
URL url = new URL("http://cmt.physics.ucf.edu:9999/User/reverse");
System.out.println("protocol = " + url.getProtocol());
                  System.out.println("host = " + url.getHost());
                  System.out.println("filename = " + url.getFile());
                  System.out.println("port = " + url.getPort());
                  System.out.println("ref = " + url.getRef());


                           URLConnection connection =
url.openConnection();
// writing to URL
                           PrintStream outStream = new
PrintStream(connection.getOutputStream());

                           DataInputStream inStream;
                           String inputLine;

                           outStream.println("string=" +
stringToReverse);
                           outStream.close();

// reading from URL

  ------------------>      inStream = new DataInputStream(connection.getInputSt
ream());
                           while (null != (inputLine =
inStream.readLine())) {
                               System.out.println(inputLine);
                           }
                           inStream.close();
                       } catch (MalformedURLException me) {
                           System.err.println("MalformedURLException: "
+ me);
                       } catch (IOException ioe) {
                           System.err.println("IOException: " + ioe);
                       }
                   }
               }


==================================================

I tried to seperate the line pointed by "------>" into two statements and made 
sure that the exception was thrown at connection.getInputStream(). It was a 
java.lang.NumberFormatException. 

How could this happen? Any hint?

Thanks,

Ying

Received on Thursday, 25 July 1996 01:13:24 UTC