Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

XMLHTTP Call to C# Webservice in Javascript passes null parameters

1 view
Skip to first unread message

magister pips

unread,
Aug 24, 2007, 12:46:38 PM8/24/07
to
Hello, I have encountered some strange behaviour when using the
XMLHTTP Request object in Javascript to return xml from a C#
Webservice Method. I create a SOAP envelope and send it off to the
Webservice, which I have debug points in, which when hit I can see
that all the parameters are coming thru as null. I can't figure out
why this is, any experts out there would be a great help.

Here is my Javascript:


function showMsga()
{
if(window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
try {
req = new
ActiveXObject("Microsoft.XMLHTTP"); }
catch(e) {
req = false;
}
}
}
else if(window.XmlHttpRequest) {
try {
req = new XmlHttpRequest();
}
catch(e) {
req = false;
}
}


var wer = window.location;

if(req) {
var strEnvelope = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
\n"+
"<soap:Envelope xmlns:xsi=\" http://www.w3.org/2001/XMLSchema-instance\""
+
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""
+
" xmlns:soap= \"http://schemas.xmlsoap.org/soap/envelope/\">
\n" +
"<soap:Body>\n" +
"<MyMethod xmlns=\"https://freedom.org/MyService\">\n" +
"<tpid xsi:type=\"xsd:string\">3083</tpid>\n" +
"<poid xsi:type=\"xsd:string\">1045</poid>\n" +
"</MyMethod>" + "</soap:Body>" + "</soap:Envelope>";


req.onreadystatechange = GetMessage;
req.open("POST","http://"+window.location.hostname+"/MyService/
Service.asmx",true);
req.setrequestheader("Content-type", "text/xml");
req.setRequestHeader("SOAPAction","https://freedom.org/MyMethod");
req.send(strEnvelope);

}
}


here is the C# for the WebService method

[WebMethod]
public string MyMethod(string tpid, string poid)
{
int userID = Users2.GetUserID();

DataProvider dp = DataProvider.Instance();

if(Convert.ToInt32(poid)>0)
{
return dp.GetPostDetail(Convert.ToInt32(poid), userID);
}
else
{
return dp.GetTopicDetail(Convert.ToInt32(tpid), userID);
}
}


originally the method took integers but I switched them to strings in
the hope they would work,
any and all comments and hints are greatly appreciated.

Thanks,
Matt

0 new messages