Subject: RE: Error updating pin with SOAP request Replied by: David Staudt on 21-02-2013 01:07:17 PM The error usually means that the beginning of the XML is somehow corrupt/malformed.
From your code, it looks like you are appending the Content-Length header - with no actual content length value or terminating carriage-return/life-feed - and then immediately starting in with the XML. This probably looks like a badly malformed Content-Length header followed by a body containing nothing.
I think you need to do something like: - Create/concatenate the XML payload in a string variable - Calculate the XML variable's length - In a new variable start building/concatenating the headers, including Content-Length header, with the value calculated above, and terminating CR/LF - Append an intervening CR/LF (to terminate the header part of the packet) - Append the XML This document was generated from CDN thread
Created by: darrell breyer on 21-02-2013 12:49:01 PM HI All, I'm trying to update users Pin number with a .Net C# webpage. I have pasted the code and error below. I ended up using soap although I noticed there is a risservice.wsdl that should have methods to update pins. Any help would be greatly appreciated. code ---------------------- using System; using System.Net; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Xml; using System.Net.Mail; using System.Net.Mime; using System.Data; using System.Configuration; using System.Web.Security; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Collections; using System.Data.SqlClient; using System.Text; using System.Runtime.InteropServices; using System.Xml.Serialization; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { try { ServicePointManager.ServerCertificateValidationCallback += delegate { return true; }; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("https://ip:8443/axl/")); request.ProtocolVersion = System.Net.HttpVersion.Version10; request.Credentials = new NetworkCredential("user", "pass"); request.Timeout = 100000; request.Method = "POST"; request.ContentType = "text/xml"; String axlSoapRequest = null; String axlRequestEnvelope = null; axlSoapRequest = "POST /axl/ HTTP/1.0\r\n"; axlSoapRequest += "Host: host:8443 \r\n"; axlSoapRequest += "Authorization: Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(("user" + ":" + "pass"))) + "==\r\n"; axlSoapRequest += "Accept: text/*\r\n"; axlSoapRequest += "Content-type: text/xml\r\n"; axlSoapRequest += "SOAPAction: \"CUCMB ver=8.0\"\r\n"; axlSoapRequest += "Content-length: "; axlRequestEnvelope = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns=\"http://www.cisco.com/AXL/API/8.5\"> "; axlRequestEnvelope += "<soapenv:Header/>"; axlRequestEnvelope += "<soapenv:Body>"; axlRequestEnvelope += "<ns:updateUser sequence=\"?\">"; axlRequestEnvelope += "<userid>user</userid>"; axlRequestEnvelope += "<password>user pass</password>"; axlRequestEnvelope += "<pin>new pin</pin>"; axlRequestEnvelope += "</ns:updateUser>"; axlRequestEnvelope += "</soapenv:Body> "; axlRequestEnvelope += "</soapenv:Envelope>"; axlSoapRequest += axlRequestEnvelope.ToString(); axlSoapRequest += "\r\n\r\n"; Stream requestStream = request.GetRequestStream(); requestStream.Write(System.Text.Encoding.ASCII.GetBytes(axlSoapRequest), 0, axlSoapRequest.Length); requestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8); Label1.Text = readStream.ReadToEnd(); Response.ContentType = "text/xml"; Response.Charset = "utf-8"; Response.Write(readStream.ReadToEnd()); } catch (Exception ex) { } } } this is the error that is printed to the page <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<axl:message>Content is not allowed in prolog.</axl:message>
<request />
</axl:Error>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Subject: RE: Error updating pin with SOAP request Replied by: darrell breyer on 21-02-2013 01:32:38 PM Thanks David, I took your suggestions and got the following response: This looks like a successful response yes? I am working with the our engireers to see if the pin was in fact updated...
Subject: RE: Error updating pin with SOAP request Replied by: David Staudt on 21-02-2013 01:34:26 PM Response looks right...the return value should be the primary key (uuid) of the effected device.
Subject: RE: Error updating pin with SOAP request Replied by: darrell breyer on 21-02-2013 01:47:12 PM Thanks for you help on this David, very much appreciated! Here is the final code in case anyone else comes across this issue:
StreamReader readStream = new StreamReader(responseStream, Encoding .UTF8); Label1.Text = readStream.ReadToEnd();
Response.ContentType =
"text/xml" ; Response.Charset =
"utf-8" ; Response.Write(readStream.ReadToEnd());
}
catch (Exception ex) {
}
}
}
Subject: RE: Error updating pin with SOAP request Replied by: darrell breyer on 21-02-2013 01:48:15 PM using System; using System.Net; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Xml; using System.Net.Mail; using System.Net.Mime; using System.Data; using System.Configuration; using System.Web.Security; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Collections; using System.Data.SqlClient; using System.Text; using System.Runtime.InteropServices; using System.Xml.Serialization; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { }
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: