Boris,
You were correct. The biggest problem was part 2 setting up for reading an output
stream from Orion. Once I told Orion I wished to do input also "setDoInput( true )" and
requested the input stream "conn.getInputStream()"  everything worked like it should. I
also changed the println to print.

Thanks for your help.

Milton S.

Boris Erukhimov wrote:

> OK, I still doubt some of your code lines.
>
> 1. When you do
>         out.println( "cmd=" + URLEncoder.encode( xml ) );
> it is not getting exactly URL-encoded becaouse of the newline symbol
> added by "println".
>
> 2. Your client sends HTTP request but there is no line in code to get
> InputStream back.
> That's obviously not a correct way to deal with HTTP socket and it's on
> web server's (orion's here) developer mercy how to react. For instance
> if there is no input socket open in certain time interval they can
> simply ignore your POST request
>
> Milton S wrote:
> >
> > Thank you for your suggestion.
> >
> > I just tried it but it doesn't perform a connection either. The only difference
> > between what Hunter is doing in his code and mine is he is using a
> > DataOutputStream and I am using a PrintWriter which shouldn't make any
> > difference. He is also using the URLEncoder.encode method for both the name and
> > value. All the URLEncoder.encode method does is scan the string for reserved and
> > unsafe characters and replaces them with their URL encodings. This is equivalent
> > to my line:
> > out.println( "cmd=" + URLEncoder.encode( xml ) );
> > I don't bother to encode "cmd because it doesn't have any reserved or unsafe
> > characters in it. It is producing the same string value as Hunter's
> > "toEncodedString()" method.
> >
> > I am beginning to think I don't have Orion configured properly or my application
> > deployed properly because all the code examples I see all have the same structure
> > and others seem to be able to make them work.
> >
> > Thank you for taking the time to look at my problem.
> >
> > Milton S.
> >
> > Boris Erukhimov wrote:
> >
> > > It looks like you are not properly supplying arguments for "POST" method
> > > The right order based on Jason Hunter book example is below:
> > > To use it in your case just put your xml string into Properties object
> > > as a value against "cmd" as a name
> > >
> > >  public static final InputStream sendPostMessage(Properties args, URL
> > > destination)
> > >                 throws IOException
> > >   {
> > >     String argString = "";
> > >     if (args != null)
> > >         {
> > >         argString = toEncodedString(args);
> > >         }
> > >
> > >     URLConnection con = destination.openConnection();
> > >
> > >     // Prepare for both input and output
> > >     con.setDoInput(true);
> > >     con.setDoOutput(true);
> > >
> > >     // Turn off caching
> > >     con.setUseCaches(false);
> > >
> > >     // Work around a Netscape bug
> > >     con.setRequestProperty("Content-Type",
> > > "application/x-www-form-urlencoded");
> > >
> > >     // Write the arguments as post data
> > >     DataOutputStream out = new DataOutputStream(con.getOutputStream());
> > >
> > >     out.writeBytes(argString);
> > >     out.flush();
> > >     out.close();
> > >
> > >     return (con.getInputStream());
> > >   }
> > > /////////////////sendPostMessage
> > >
> > >  private static final String toEncodedString(Properties args)
> > >   {
> > >     StringBuffer buf = new StringBuffer();
> > >     Enumeration names = args.propertyNames();
> > >     while (names.hasMoreElements())
> > >         {
> > >         String name = (String) names.nextElement();
> > >         String value = args.getProperty(name);
> > >         buf.append(URLEncoder.encode(name) + "=" + URLEncoder.encode(value));
> > >         if (names.hasMoreElements())
> > >                 buf.append("&");
> > >         }
> > >     return buf.toString();
> > >   }
> > > ////////////////////toEncodedString
> > >
> > > Hope it helps
> > > ~boris
> > >
> > > Milton S wrote:
> > > >
> > > > Orion Interest Group,
> > > >
> > > > I have written a Java class to test server to server communication for a
> > > > servlet running on Orion 1.5.2. Nothing seems to happen when I run the
> > > > class while the same URL sent from the address/location edit box on a
> > > > browser works perfectly. The host URL I am using is
> > > > "http://ducati:8080/petroweb/report"; where ducati is the name of my
> > > > notebook, petroweb is the application name, and report is the servlet I
> > > > am trying to access. Following is the code I am using to make the
> > > > "POST". What should I look for to make this work?
> > > >
> > > > I have "System.out.println's" in my servlet code to notify the open
> > > > command prompt, in which Orion is running, of any requests received. I
> > > > also have, in my servlet, all "GET" requests resolving to the "doPost"
> > > > method.
> > > >
> > > > My environment is Intel P850, MS Windows 2000 Professional. Sun jdks,
> > > > Orion 1.5.2 (stable binaries).
> > > >
> > > > Thank you for your help.
> > > >
> > > > import java.io.*;
> > > > import java.net.*;
> > > > import java.util.*;
> > > >
> > > > public class PostTest {
> > > >
> > > >   public static void main( String args[] ){
> > > >     String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
> > > >                  "<pwCmdXML>" +
> > > >                  "<Command>SubmitJob</Command>" +
> > > >                  "<CommandPassword>aPwd</CommandPassword>" +
> > > >                  "<ProjectName>TheProject</ProjectName>" +
> > > >                  "<ProjectType>pType</ProjectType>" +
> > > >                  "<ObjectClass>stuff</ObjectClass>" +
> > > >                  "<ObjectList>1,2,3,4,5,6,7,8,9,10,11,12,13,14,15," +
> > > >                  "16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31," +
> > > >                  "32,33,34,35,36</ObjectList>" +
> > > >                  "</pwCmdXML>";
> > > >
> > > >     try{
> > > >       URL url = new URL( "http://ducati:8080/petroweb/report?"; );
> > > >       HttpURLConnection conn = (HttpURLConnection)url.openConnection();
> > > >
> > > >       conn.setDoOutput( true );
> > > >       conn.setRequestMethod( "POST" );
> > > >       PrintWriter out = new PrintWriter(conn.getOutputStream() );
> > > >
> > > >       out.println( "cmd=" + URLEncoder.encode( xml ) );
> > > >       conn.connect();
> > > >       out.flush();
> > > >       out.close();
> > > >     }
> > > >     catch( MalformedURLException err ){
> > > >       System.out.println( "MalformedURLException = " + err.getMessage()
> > > > );
> > > >     }
> > > >     catch( IOException err ){
> > > >       System.out.println( "IOException = " + err.getMessage() );
> > > >     }
> > > >   }
> > > > }


Reply via email to