Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / August 2007

Tip: Looking for answers? Try searching our database.

Dynamic page updates using XMLHTTP

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Labhesh Shrimali - Bangalore - 07 Aug 2007 08:30 GMT
I am using vbscript for calling my webservice. From vbscript I Post XML
file/argument to webservice. and i get response from webservice.
This is working perfectly when there is no argument. but does not work when
my webmethod(In Webserice) takes argument.
I repeat: When service give me response when webmethod without argument, but
another webmethod with argument does not work.
not sure what is wronge with my code. Code as below
VBSCRIPT :
' VBScript File
'************************************************'
Dim objHttp
dim objXmlDoc

MsgBox("Starting the Calling webservice")
WSController()
MsgBox("End Calling the webservice")


Public Function getDataFromWS(methodName, dataSetName)
   
   Dim wsParamValue
   Dim wsParamName
   '// create the XML object
   Set objXmlDoc = CreateObject("Msxml2.DOMDocument")
   'Set objDictionary = CreateObject("Scripting.Dictionary")

   If IsNull(objXmlDoc) Then
       Msgbox("Unable to create DOM document!")
    Else
       '// create an XmlHttp instance
       Set objHttp = CreateObject("Microsoft.XMLHTTP")
   
       Dim objGetTransferResult
       objGetTransferResult = "GetTransferResult"
       Dim objDescription
       objDescription = "Description"
       Dim objTransferID
       objTransferID = "TransferID"
   
       '// Create the SOAP Envelope
       strEnvelope = "<soap:Envelope
xsi=\http://www.w3.org/2001/XMLSchema-instance\" + "
xsd=\http://www.w3.org/2001/XMLSchema\" + "
soap=\http://schemas.xmlsoap.org/soap/envelope/\>" + " <soap:Body>" + " <" +
methodName + " xmlns=\http://marksandspencer.com\>" + " </" + methodName +
">" +"  </soap:Body>" +"</soap:Envelope>"
     

        MsgBox(strEnvelope)
            
       '// Set up the post
       objHTTP.onreadystatechange = getRef("LoadAndProcessDocument")
       'objHttp.onreadystatechange = Call abc(objHttp,objXmlDoc)
       
       Dim szUrl
       szUrl = "http://localhost:1400/wsXMLHTTP/DynaProducts.asmx/" + methodName
       
       If wsParamValue <> null Then
           szUrl = szUrl + "?" + wsParamName + "=" + wsParamValue
       End If
       
       '// send the POST to the Web service
       objHttp.open "POST", szUrl, true
       objHttp.setRequestHeader "Content-Type",
"application/x-www-form-urlencoded"
       objHttp.send strEnvelope
     End If
End Function

Public function LoadAndProcessDocument()  
' a readyState of 4 means we're ready to use the data returned by XMLHTTP
   if objHttp.readystate = 4 then
       dim szresponse
       szresponse = objHttp.responsetext
       objXmlDoc.loadxml(szresponse)
           if objXmlDoc.parseerror.errorcode <> 0 then
               dim xmlerr
               Set xmlerr = objXmlDoc.parseerror
               MsgBox("you have error " + xmlerr.reason)
           Else
               ProcesstheRequest()
               '
           End If  
   End If
End Function
       
Public Function WSController()
   MsgBox("I am inside WSController Function")   
   Dim func
   'func = getDataFromWS("GetCategories", "GetCategoriesDS")
   func = getDataFromWS("GetTransferResult", "GetTransferResultDS")
   'MsgBox("Please wait while data is retrieved...")
   'Window.setTimeout func, 1
End Function

Public Function ProcesstheRequest()
   '// get an XML data island with the category data
   'MsgBox("I will show you Returned XML DOc" + objXmlDoc)
   
   MsgBox(objXmlDoc.text)
   
   'objNodeList = objXmlDoc.getElementsByTagName("Description")
   'MsgBox("NodeList Size" + objNodeList.length)
   
'        For i=0 to objNodeList.length
'            Dim dataNodeList
'            Dim textNode
'            Dim valueNode
'            dataNodeList = objNodeList(i).childNodes
'            MsgBox(dataNodeList.item(0))
'            MsgBox(dataNodeList.item(1))
'        Next
 End Function

'********************************
TWO WEBSERVICE METHOD:(C#,ASP.NET)
       [WebMethod]
       public string GetTransferResult(string Description, string TransferID)
       {
           try
           {

           }
           catch
           {
               // error handling ommitted for brevity
           }
           finally
           {
           }

           return Description;
       }

       [WebMethod]
       public string GetCategories()
       {
           return "LABHESHSHRIMALI";
       }

How to run: Defind webservice method and run webservice.
give the path of webservice in vbscirpt file and execute the vbscript.

I have taken the reference from following URL (in javascript)

 http://support.microsoft.com/kb/893659

Please let me know if you have any problem in understanding my problem.

Signature

Labhesh Shrimali -  MCP
Mumbai-Bangalore - India
9833952909

Alexey Smirnov - 07 Aug 2007 08:58 GMT
On Aug 7, 9:30 am, Labhesh Shrimali - Bangalore
<LabheshShrimaliBangal...@discussions.microsoft.com> wrote:
> I am using vbscript for calling my webservice. From vbscript I Post XML
> file/argument to webservice. and i get response from webservice.
[quoted text clipped - 147 lines]
> Mumbai-Bangalore - India
> 9833952909

So, you mean that this is not working?

Dim szUrl
szUrl = "http://localhost:1400/wsXMLHTTP/DynaProducts.asmx/" +
methodName

If wsParamValue <> null Then
szUrl = szUrl + "?" + wsParamName + "=" + wsParamValue
End If

I think you have to change IF..THEN to

If Not wsParamValue Is Nothing Then

and then debug if you have the right szUrl at the end
Labhesh Shrimali - Bangalore - 07 Aug 2007 09:54 GMT
Not Sure what is the problem, but i receive an error when i try to execute
webmethod which has argument[GetTransferResult],
but it work fine when i use webmethod which has no argument[GetCategories()].

Steps:
1. First I uncomment the code for GetGategories() Method in
WSController(),also change the strEnvelop string value for this method and it
works fine. (Note this method does not have argument]
2. Second I try to comment GetCategories() and uncomment GetTransferResult()
with the required SOAP xml. and this does not work work.not sure why.

Signature

Labhesh Shrimali -  MCP
Bangalore - India
9886497756

> On Aug 7, 9:30 am, Labhesh Shrimali - Bangalore
> <LabheshShrimaliBangal...@discussions.microsoft.com> wrote:
[quoted text clipped - 165 lines]
>
> and then debug if you have the right szUrl at the end
Labhesh Shrimali - Bangalore - 08 Aug 2007 08:04 GMT
I explain again

I have an aspx site, in which I like to access a webservice (asmx
file) with vbscript. I think it like this:

set xmlHTTP = CreateObject("Msxml2.XMLHTTP")
set xmlDoc = CreateObject("Msxml2.DOMDocument")
sQuery = "http://mshsrmnsisd0086/IS04/Invoke.aspx"
senddata="<is04_service_request><action step='1'><arg name='Description'
value='xxxxx'/><arg name='TransferID'
value='TB0660000001'/></action></is04_service_request>"

xmlHTTP.open "POST", sQuery, false
' on error resume next
xmlHTTP.send(senddata)
' on error goto 0

xmlDoc.async = false
xmlDoc.loadXML(xmlHTTP.responseText)

' Error Handling
if xmlDoc.parseError.errorCode <> 0 Then
  'Error handling invalid response or XML not valid
 Wscript.echo "oops" & xmlDoc.parseError.errorCode & vbCrLf &
xmlHTTP.responseText
else

'Treat Response
strXMLOUT = xmlDOC.XML
Wscript.echo strXMLOUT
Set xmlDoc = Nothing
Set xmlHTTP = Nothing
end if

In this example the webservice gave back an url, on which the site is
redirected to.

But one problem still occour. When
I try to ask a webservice via get method without any parameters, it
works. But when I try to ask a webservice with methods it hangs.

For example:

url="http://localhost/test.asmx/helloworld";   < this works
url="http://localhost/test.asmx/helloworld?param=test";  < this hangs

The following Message comes:

System.InvalidOperationException
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.Invoke()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

What  could be problem?
Thanks for all answers.

Labhesh

Signature

Labhesh Shrimali -  MCP
Bangalore - India
9886497756

> On Aug 7, 9:30 am, Labhesh Shrimali - Bangalore
> <LabheshShrimaliBangal...@discussions.microsoft.com> wrote:
[quoted text clipped - 165 lines]
>
> and then debug if you have the right szUrl at the end
Alexey Smirnov - 08 Aug 2007 08:58 GMT
On Aug 8, 9:04 am, Labhesh Shrimali - Bangalore
<LabheshShrimaliBangal...@discussions.microsoft.com> wrote:

Hi Labhesh

> xmlHTTP.open "POST", sQuery, false

in a working example you do POST

> url="http://localhost/test.asmx/helloworld?param=test";  < this hangs

and in the problem code you do GET

So, what the exact code which returned an error?

url="http://localhost/test.asmx/helloworld?param=test"
Set xmlHTTP = CreateObject("MSXML2.ServerXMLHTTP")
xmlHTTP.Open "GET", url, False
xmlHTTP.Send

Like this?

The message is from .NET, where do you get it?

> The following Message comes:
>
> System.InvalidOperationException
> at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
> at System.Web.Services.Protocols.WebServiceHandler.Invoke()
> at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

Can you post the service description and an asmx, so we can take look?
Does web service return an answer when you type
http://localhost/test.asmx/helloworld?param=test in a browser?
Labhesh Shrimali - Bangalore - 08 Aug 2007 10:04 GMT
Webservice as below *********
       [System.Web.Services.WebMethod]
       public string GetTransferResult(string TransferID, string Description)
       {
           try
           {
               
           }
           catch
           {
               // error handling ommitted for brevity
           }
           finally
           {
           }

           return Description;
       }

       [WebMethod]
       public string GetCategories()
       {
           return "LABHESHSHRIMALI";
       }

VB Script Code as below  ***************
' VBScript File

Dim objHttp
dim objXmlDoc

MsgBox("Starting the Calling webservice")
WSController()
MsgBox("End Calling the webservice")


Public Function getDataFromWS(methodName, dataSetName, wsParamValue,
wsParamName)
   
   '// create the XML object
   Set objXmlDoc = CreateObject("Msxml2.DOMDocument")
   'Set objDictionary = CreateObject("Scripting.Dictionary")

   If IsNull(objXmlDoc) Then
       Msgbox("Unable to create DOM document!")
    Else
       '// create an XmlHttp instance
       Set objHttp = CreateObject("Microsoft.XMLHTTP")
   
       Dim objGetTransferResult
       objGetTransferResult = "GetTransferResult"
       Dim objDescription
       objDescription = "Description"
       Dim objTransferID
       objTransferID = "TransferID"
   
       '// Create the SOAP Envelope
          strEnvelope = "<soap12:Envelope
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:soap12=http://www.w3.org/2003/05/soap-envelope> <soap12:Body>  
<GetCategories xmlns=http://marksandspencer.com/ />
</soap12:Body></soap12:Envelope>"
        'strEnvelope = "<soap12:Envelope
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:soap12=http://www.w3.org/2003/05/soap-envelope><soap12:Body><GetTransferResult
xmlns=http://marksandspencer.com/><Description>string</Description><TransferID>string<
/TransferID></GetTransferResult></soap12:Body></soap12:Envelope
>"
         'strEnvelope = "<soap12:Envelope
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:soap12=http://www.w3.org/2003/05/soap-envelope>  <soap12:Body>    
<GetTransferResultResponse xmlns=http://marksandspencer.com/>    
<GetTransferResultResult>string</GetTransferResultResult>    
</GetTransferResultResponse>  </soap12:Body></soap12:Envelope>"

       MsgBox(strEnvelope)
            
       '// Set up the post
       objHTTP.onreadystatechange = getRef("LoadAndProcessDocument")
       'objHttp.onreadystatechange = Call abc(objHttp,objXmlDoc)
       
       Dim szUrl
       szUrl = "http://localhost:1400/wsXMLHTTP/DynaProducts.asmx/" + methodName
       szUrl = szUrl +  + "?TransferID=" + wsParamName + "&Description=" +
wsParamValue
       Msgbox(szUrl)
       
       If IsEmpty(wsParamValue) Then
           szUrl = szUrl + "?" + wsParamName + "=" + wsParamValue
           Msgbox("Param not null" + wsParamValue)
       Else
           Msgbox("Param null" + wsParamValue)    
       End If
       '// send the POST to the Web service
       objHttp.open "POST", szUrl, true
       objHttp.setRequestHeader "Content-Type",
"application/x-www-form-urlencoded"
       'objHttp.setRequestHeader "Content-Type", "application/soap+xml;
charset=utf-8"
       objHttp.send strEnvelope
     End If
End Function

Public function LoadAndProcessDocument()  
' a readyState of 4 means we're ready to use the data returned by XMLHTTP
   if objHttp.readystate = 4 then
       dim szresponse
       szresponse = objHttp.responsetext
       MsgBox(szresponse)
       objXmlDoc.loadxml(szresponse)
           if objXmlDoc.parseerror.errorcode <> 0 then
               dim xmlerr
               Set xmlerr = objXmlDoc.parseerror
               MsgBox("you have error " + xmlerr.reason)
           Else
               ProcesstheRequest()
               '
           End If  
   End If
End Function
       
Public Function WSController()
   MsgBox("I am inside WSController Function")   
   Dim func
   func = getDataFromWS("GetCategories", "GetCategoriesDS","AAA","BBBB")
   'func = getDataFromWS("GetTransferResult",
"GetTransferResultDS","AA","BB")
   'func = getDataFromWS("OneArgument", "OneArgumentOnly")
   MsgBox("Please wait while data is retrieved...")
   'Window.setTimeout func, 1
   idTimer = window.setTimeout("func", 1000, "VBScript")
'    window.setTimeout func, 1, "JavaScript"
End Function

Public Function ProcesstheRequest()
   '// get an XML data island with the category data
   'MsgBox("I will show you Returned XML DOc" + objXmlDoc)
   
   MsgBox(objXmlDoc.text)
 
 End Function

 
Signature

Labhesh Shrimali -  MCP
Bangalore - India
9886497756

> On Aug 8, 9:04 am, Labhesh Shrimali - Bangalore
> <LabheshShrimaliBangal...@discussions.microsoft.com> wrote:
[quoted text clipped - 30 lines]
> Does web service return an answer when you type
> http://localhost/test.asmx/helloworld?param=test in a browser?
Labhesh Shrimali - Bangalore - 08 Aug 2007 10:04 GMT
My Code as below:
WebService Methods: *****************************
   [System.Web.Services.WebMethod]
       public string GetTransferResult(string TransferID, string Description)
       {
           try
           {
               
           }
           catch
           {
               // error handling ommitted for brevity
           }
           finally
           {
           }

           return Description;
       }
       [WebMethod]
       public string GetCategories()
       {
           return "LABHESHSHRIMALI";
       }

VBScript files  ********************************
' VBScript File

Dim objHttp
dim objXmlDoc

MsgBox("Starting the Calling webservice")
WSController()
MsgBox("End Calling the webservice")


Public Function getDataFromWS(methodName, dataSetName, wsParamValue,
wsParamName)
   
   '// create the XML object
   Set objXmlDoc = CreateObject("Msxml2.DOMDocument")
   'Set objDictionary = CreateObject("Scripting.Dictionary")

   If IsNull(objXmlDoc) Then
       Msgbox("Unable to create DOM document!")
    Else
       '// create an XmlHttp instance
       Set objHttp = CreateObject("Microsoft.XMLHTTP")
   
       Dim objGetTransferResult
       objGetTransferResult = "GetTransferResult"
       Dim objDescription
       objDescription = "Description"
       Dim objTransferID
       objTransferID = "TransferID"
   
       '// Create the SOAP Envelope
          strEnvelope = "<soap12:Envelope
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:soap12=http://www.w3.org/2003/05/soap-envelope> <soap12:Body>  
<GetCategories xmlns=http://marksandspencer.com/ />
</soap12:Body></soap12:Envelope>"
        'strEnvelope = "<soap12:Envelope
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:soap12=http://www.w3.org/2003/05/soap-envelope><soap12:Body><GetTransferResult
xmlns=http://marksandspencer.com/><Description>string</Description><TransferID>string<
/TransferID></GetTransferResult></soap12:Body></soap12:Envelope
>"
         'strEnvelope = "<soap12:Envelope
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:soap12=http://www.w3.org/2003/05/soap-envelope>  <soap12:Body>    
<GetTransferResultResponse xmlns=http://marksandspencer.com/>    
<GetTransferResultResult>string</GetTransferResultResult>    
</GetTransferResultResponse>  </soap12:Body></soap12:Envelope>"

       MsgBox(strEnvelope)
            
       '// Set up the post
       objHTTP.onreadystatechange = getRef("LoadAndProcessDocument")
       'objHttp.onreadystatechange = Call abc(objHttp,objXmlDoc)
       
       Dim szUrl
       szUrl = "http://localhost:1400/wsXMLHTTP/DynaProducts.asmx/" + methodName
       szUrl = szUrl +  + "?TransferID=" + wsParamName + "&Description=" +
wsParamValue
       Msgbox(szUrl)
       
       If IsEmpty(wsParamValue) Then
           szUrl = szUrl + "?" + wsParamName + "=" + wsParamValue
           Msgbox("Param not null" + wsParamValue)
       Else
           Msgbox("Param null" + wsParamValue)    
       End If
       '// send the POST to the Web service
       objHttp.open "POST", szUrl, true
       objHttp.setRequestHeader "Content-Type",
"application/x-www-form-urlencoded"
       'objHttp.setRequestHeader "Content-Type", "application/soap+xml;
charset=utf-8"
       objHttp.send strEnvelope
     End If
End Function

Public function LoadAndProcessDocument()  
' a readyState of 4 means we're ready to use the data returned by XMLHTTP
   if objHttp.readystate = 4 then
       dim szresponse
       szresponse = objHttp.responsetext
       MsgBox(szresponse)
       objXmlDoc.loadxml(szresponse)
           if objXmlDoc.parseerror.errorcode <> 0 then
               dim xmlerr
               Set xmlerr = objXmlDoc.parseerror
               MsgBox("you have error " + xmlerr.reason)
           Else
               ProcesstheRequest()
               '
           End If  
   End If
End Function
       
Public Function WSController()
   MsgBox("I am inside WSController Function")   
   Dim func
   func = getDataFromWS("GetCategories", "GetCategoriesDS","AAA","BBBB")
   'func = getDataFromWS("GetTransferResult",
"GetTransferResultDS","AA","BB")
   'func = getDataFromWS("OneArgument", "OneArgumentOnly")
   MsgBox("Please wait while data is retrieved...")
   'Window.setTimeout func, 1
   idTimer = window.setTimeout("func", 1000, "VBScript")
'    window.setTimeout func, 1, "JavaScript"
End Function

Public Function ProcesstheRequest()
   '// get an XML data island with the category data
   'MsgBox("I will show you Returned XML DOc" + objXmlDoc)
   
   MsgBox(objXmlDoc.text)
 
 End Function

 Let me know if you need any other info in understanding the problem.

In webservice there are two methods:
One method works fine which does not have arguemetn. but other give an error
because that has an argument.
and i want to provide the argument to the webservice method.

Plz help me how to achive this.
Signature

Labhesh Shrimali -  MCP
Bangalore - India
9886497756

> On Aug 8, 9:04 am, Labhesh Shrimali - Bangalore
> <LabheshShrimaliBangal...@discussions.microsoft.com> wrote:
[quoted text clipped - 30 lines]
> Does web service return an answer when you type
> http://localhost/test.asmx/helloworld?param=test in a browser?

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.