[oXygen-user] HttpUrlConnection and HTTP method in a Saxon extension
Florent Georges
Mon Jan 5 05:51:00 CST 2009
Dan,
Thanks for this detailed sample. I enabled the log categories as in
your email, and I can see my request is indeed a GET. I tried your
sample and I get a POST with it. So it seems the problem is in my
code.
BTW, if I use getRequestMethod() on the connection in your example
(after the setRequestMethod call), I get GET, but from the logs POST
seems to be used instead.
I was not able to create a simple example, but I can package a little
subset of the relevant sources if I can send them privately.
Regards,
--
Florent Georges
http://www.fgeorges.org/
Dan Caprioara wrote:
> Oxygen uses the Apache http client to read/write from WebDAV HTTP
> servers. For this, a new implementation of the HTTPURLConnection
> wraps
> the Apache http client. Normally, the PUT method is used for storing
> data on the servers and GET to retrieve it, but the POST method is
> also
> supported.
>
> This is how I tried to reproduce your problem, but without success:
>
> First of all, I have enabled the http logging. For this, I have
> created
> a log4j.properties file in the oXygen installation directory, with
> the
> following content:
>
> log4j.rootCategory= info, R
> log4j.category.org.apache.commons=debug
> log4j.category.httpclient=debug
> # R is the standard output
> log4j.appender.R=org.apache.log4j.ConsoleAppender
> log4j.appender.R.layout=org.apache.log4j.PatternLayout
> log4j.appender.R.layout.ConversionPattern=%r %p [ %t ] %c - %m%n
>
> I have then started oXygen using the startup scripts available in the
>
> installation directory.
>
> I have compiled the following java class, and added it as an
> extension
> to the transformation scenario. I have then tested with both Saxon B
> and
> Saxon 6.5:
>
> import java.io.InputStream;
> import java.io.OutputStream;
> import java.net.HttpURLConnection;
> import java.net.URL;
>
> public class SaxonExtension {
>
> public static String post() {
> try {
> URL url = new URL("http://www.sync.ro/");
> HttpURLConnection conn =
> (HttpURLConnection)url.openConnection();
> conn.setRequestMethod("POST");
> conn.connect();
> OutputStream os = conn.getOutputStream();
> os.write("some_parameter".getBytes());
> os.close();
> InputStream is = conn.getInputStream();
> int r = is.read();
> StringBuffer buf = new StringBuffer();
> while(r != -1) {
> buf.append((char)r);
> r = is.read();
> }
> is.close();
> return buf.toString();
> } catch (Exception e) {
> return e.toString();
> }
> }
> }
>
>
> The following lines were written in the log:
>
> - >> "POST http://www.sync.ro/ HTTP/1.1[\r][\n]"
> - >> "User-Agent: Jakarta Commons-HttpClient/3.1[\r][\n]"
> - >> "Host: www.sync.ro[\r][\n]"
> - >> "Proxy-Connection: Keep-Alive[\r][\n]"
> - >> "Content-Length: 6[\r][\n]"
> - >> "[\r][\n]"
> - >> "some_parameter"
>
>
> Please send to support the log you obtain and eventually a Java
> sample
> showing the problem.
>
> As a workaround, you could create directly a
> sun.net.www.protocol.http.HttpURLConnection object.
>
> Happy New Year!
> Dan Caprioara
>
>
>
> Florent Georges wrote:
> > Hi,
> >
> > Best wishes to the oXygen team and users.
> >
> > I have a Saxon extension in Java, that opens an HTTP connection
> from
> > a URL and set the HTTP method on it to POST:
> >
> > URL url = ...;
> > HttpURLConnection conn = (HttpURLConnection)
> url.openConnection();
> > conn.setRequestMethod("POST");
> >
> > Unfortunately, the method is always GET, and there is no
> exception
> > raised in that code. I must admit it took a while to find the
> cause.
> > The code works well outside oXygen, and the object 'conn' is
> actually
> > of type ro.sync.net.protocol.http.WebdavHttpURLConnection when the
> > transform is launched from within oXygen.
> >
> > Is it because of a bug in this class? Is there any way to work
> > around this one? Outside of oXygen, in a standalone Sun JVM, the
> > class is sun.net.www.protocol.http.HttpURLConnection, for what is
> > worth noting...
> >
> > Un an nou fericit!
> >
> >
>
More information about the oXygen-user
mailing list