cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
647
Views
0
Helpful
0
Comments
cdnadmin
Level 11
Level 11

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/">


  <SOAP-ENV:Header />


- <SOAP-ENV:Body>


- <SOAP-ENV:Fault>


  <faultcode>SOAP-ENV:Client</faultcode>


  <faultstring>Content is not allowed in prolog.</faultstring>


- <detail>


- <axl:Error xmlns:axl="http://www.cisco.com/AXL/API/1.0">


  <axl:code>5001</axl:code>


  <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...

- <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">


  <SOAP-ENV:Header />


- <SOAP-ENV:Body>


- <axl:updateUserResponse sequence="?" xmlns:axl="http://www.cisco.com/AXL/API/6.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">


  <return>{29B11E42-4B4E-4EA3-B1DF-482CB0CEAAC4}</return>

  </axl:updateUserResponse>


  </SOAP-ENV:Body>


  </SOAP-ENV:Envelope>
 
 

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:

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



{

 

String axlSoapRequest = null
;
 


String axlRequestEnvelope = null
;
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>pass</password>"
;
axlRequestEnvelope +=


"<pin>pin</pin>"
;
axlRequestEnvelope +=


"</ns:updateUser>"
;
axlRequestEnvelope +=


"</soapenv:Body> "
;
axlRequestEnvelope +=


"</soapenv:Envelope>"
;
 

 


ServicePointManager.ServerCertificateValidationCallback += delegate { return true
; };
 


HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("https://:8443/axl/"
));
request.ProtocolVersion = System.Net.


HttpVersion
.Version10;
request.Credentials =


new NetworkCredential("user", "pass"
);
request.Timeout = 100000;

request.Method =


"POST"
;
request.ContentType =


"text/xml; charset=utf-8"
;
request.Accept =


"text/xml"
;
request.ContentLength = axlRequestEnvelope.Length;








 

Stream
requestStream = request.GetRequestStream();
requestStream.Write(System.Text.


Encoding
.ASCII.GetBytes(axlRequestEnvelope), 0, axlRequestEnvelope.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)
{

 

}

 

 

}

}

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)
    {
 
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            String axlSoapRequest = null;
            String axlRequestEnvelope = null;
            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>pass</password>";
            axlRequestEnvelope += "<pin>pin</pin>";
            axlRequestEnvelope += "</ns:updateUser>";
            axlRequestEnvelope += "</soapenv:Body> ";
            axlRequestEnvelope += "</soapenv:Envelope>";

            ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("https://:8443/axl/"));
            request.ProtocolVersion = System.Net.HttpVersion.Version10;
            request.Credentials = new NetworkCredential("user", "pass");
            request.Timeout = 100000;
            request.Method = "POST";
            request.ContentType = "text/xml; charset=utf-8";
            request.Accept = "text/xml";
            request.ContentLength = axlRequestEnvelope.Length;
           // request.ContentLength =
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(System.Text.Encoding.ASCII.GetBytes(axlRequestEnvelope), 0, axlRequestEnvelope.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)
        {
       
        }
       
   
    }
}
Getting Started

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:

Quick Links