On Wed, May 27, 2009 at 16:43, Terrence Brannon <metap...@gmail.com> wrote: > I have modified the code I read in an earlier thread on writing data to a > request stream: > http://www.mail-archive.com/libwww@perl.org/msg06373.html > > my $ua = LWP::UserAgent->new(); > my $req = HTTP::Request->new(POST => $self->url); > my $xml = $self->xml_output; > my $length = length($xml); > > $req->content($xml); > $req->header('Content-length' => $length); > $req->content_type("application/octet-stream"); > > my $res = $ua->request($req); > my $response_data = $res->content; > > But the error I am getting from them is 'Root node of XML is missing' - > which basically means to me that they did not get anything written to the > request stream.
It could also mean that your XML is in error. > They provide an example of how the POST request should be done in .NET. So > my goal is to use LWP to mimic the exact .NET commands below. The only > difference that I can see is that I am not creating a "requestStream" object > and then manually issuing requestStream.Write(postDataBytes, 0, > postDataBytes.Length); but I assume that LWP is doing something similar > under the hood. AFAICT you should end up with the same kind of request on the wire. The setting of Content-Length should not be needed, but it should not be harmfull either. --Gisle > string UploadURL = "https://www.perlrocks.com/submit.aspx?nqid=partnerid" > > HttpWebRequest request = (HttpWebRequest)WebRequest.Create(UploadURL); > > string postData = null; > request.Method = "POST"; > request.KeepAlive = false; > request.Timeout = 180000; > > postData = XMLString; > > request.ContentType = "application/octet-stream"; > byte[] postDataBytes = Encoding.UTF8.GetBytes(postData); > request.ContentLength = postDataBytes.Length; > > Stream requestStream = request.GetRequestStream(); > requestStream.Write(postDataBytes, 0, postDataBytes.Length); > requestStream.Close(); > > >