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.
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.
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();