Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1216
  • Last Modified:

Calling Web Service: part 2

Hi, As refer to http:Q_21111980.html

I got a web method as GetOutboundStatus, so how can i call it using the following info (probably using SOAP Toolkit 3.0)?

I got SOAP request as:

POST /function/1.0/functionservice.asmx HTTP/1.1
Host: webservices.mydomain.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://webservices.mydomain.com/function/1.0/GetOutboundStatus"

<?xml version="1.0" encoding="utf-8"?>
<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/">
  <soap:Body>
    <GetOutboundStatus xmlns="http://webservices.mydomain.com/function/1.0/">
      <customerID>string</customerID>
      <password>string</password>
      <transactionIDs>
        <string>string</string>
        <string>string</string>
      </transactionIDs>
      <requestSettings>
        <DIMEDocuments>
          <SecretKeys>
            <SecretKey xsi:nil="true" />
            <SecretKey xsi:nil="true" />
          </SecretKeys>
        </DIMEDocuments>
        <SecurityMode>
          <UseDIME>boolean</UseDIME>
          <DigitallySigned>boolean</DigitallySigned>
        </SecurityMode>
      </requestSettings>
    </GetOutboundStatus>
  </soap:Body>
</soap:Envelope>

And i got SOAP response as:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<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/">
  <soap:Body>
    <GetOutboundStatusResponse xmlns="http://webservices.mydomain.com/function/1.0/">
      <GetOutboundStatusResult>
        <RecipientStatus>
          <Attemps>string</Attemps>
          <CSID>string</CSID>
          <CallTime>string</CallTime>
          <TransactionID>string</TransactionID>
          <Charges>string</Charges>
          <Pages>string</Pages>
          <Phone>string</Phone>
          <Seconds>string</Seconds>
          <Speed>string</Speed>
          <Status>string</Status>
          <ProviderTxId>string</ProviderTxId>
        </RecipientStatus>
        <RecipientStatus>
          <Attemps>string</Attemps>
          <CSID>string</CSID>
          <CallTime>string</CallTime>
          <TransactionID>string</TransactionID>
          <Charges>string</Charges>
          <Pages>string</Pages>
          <Phone>string</Phone>
          <Seconds>string</Seconds>
          <Speed>string</Speed>
          <Status>string</Status>
          <ProviderTxId>string</ProviderTxId>
        </RecipientStatus>
      </GetOutboundStatusResult>
    </GetOutboundStatusResponse>
  </soap:Body>
</soap:Envelope>

thks
0
Ryan Chong
Asked:
Ryan Chong
  • 5
  • 3
  • 2
  • +1
1 Solution
 
Ryan ChongAuthor Commented:
What currently i have is:

Private soapclient As MSSOAPLib.soapclient

Private Sub Command1_Click()
    Set soapclient = New MSSOAPLib.soapclient
     
    soapclient.mssoapinit "http://webservices.junk.net/fax/1.0/faxservice.asmx?WSDL"
    soapclient.ConnectorProperty("EndPointURL") = "http://webservices.junk.net/fax/1.0/faxservice.asmx"
   
    Dim tmp As String
    Dim tmpArr(0) As String
   
    Dim retList As IXMLDOMNodeList
    Dim node As IXMLDOMNode

    tmpArr(0) = "123456789"
    Set retList = soapclient.GetOutboundStatus("customerID", "password", tmpArr(), Null)
   
    For Each node In retList
       MsgBox node.xml
    Next
   
End Sub

but failed with Type Mismatch Error on line:

Set retList = soapclient.GetOutboundStatus("customerID", "password", tmpArr(), Null)

and when i debug soapclient.detail, i got:
Client:Type conversion failure for element requestSettings  HRESULT=0x80020005

Can someone guide me where i was wrong?! Still need an urgent help, thks
0
 
EDDYKTCommented:

Have you tried

Set retList = soapclient.GetOutboundStatus("customerID", "password", tmpArr(0), Null)


or

Set retList = soapclient.GetOutboundStatus("customerID", "password", tmpArr, Null)
0
 
Ryan ChongAuthor Commented:
Hi EDDYKT,

Same error as i tried out your suggestions above.. any other suggestion? Still need urgent help, thks
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
EDDYKTCommented:
Sorry I don't know much about SOAP toolkit
0
 
aParserCommented:
Per my comment under http://www.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_21111980.html

It looks to me like the fourth parameter, requestSettings, is an optional parameter of a user-defined type.  Can you confirm this?

Have you tried leaving it off of the call, e.g.,
tmp = soapclient.GetOutboundStatus("customerID", "password", tmpArr())
0
 
Ryan ChongAuthor Commented:
>>Have you tried leaving it off of the call, e.g.,
tmp = soapclient.GetOutboundStatus("customerID", "password", tmpArr())

I got:
Invalid procedure call or argument

Problem still not resolve.. :(
0
 
aParserCommented:
A couple of things from your code on the other question ( http:Q_21111980 ):

First,
    doc.selectSingleNode("/soap:Envelope/soap:Body/GetOutboundStatus/transactionIDs").Text = "12345"

should be:
    doc.selectSingleNode("/soap:Envelope/soap:Body/GetOutboundStatus/transactionIDs/string").Text = "12345"

Second, in request.xml, get rid of the second "string" tag (if you're not going to use it)"
...
      <transactionIDs>
        <string>string</string>
        <string>string</string>
      </transactionIDs>
...

becomes
...
      <transactionIDs>
        <string>string</string>
      </transactionIDs>
...


You can loop through this code to add whatever extra TransactionIDs you need to:
    Dim oElement As IXMLDOMNode
...
' begin loop
    Set oElement = doc.createNode(NODE_ELEMENT, "string", "http://webservices.junk.net/fax/1.0/")
    oElement.Text = "23456" ' replace "23456" with whatever ID
    doc.selectSingleNode("/soap:Envelope/soap:Body/GetOutboundStatus/transactionIDs").appendChild oElement
' loop

Once I got to this point in testing, I got a [5005: Invalid credentials] error (since obviously I don't have real credentials with which to test).  Again, this should get you going.


For a longer-term solution that involves the SOAP Toolkit, look in the "User Guide" under SOAP Toolkit 3.0 | Advanced Sample Applications | Handling Complex Data Types | Using the Generic Type Mapper.
0
 
Ryan ChongAuthor Commented:
Thks aParser, thks for the useful info here, will try to complete my application development, and hopefully will close this question soon, thks again for your assistatnce here ;-)
0
 
aParserCommented:
Any problems? Anything I can do to help?
0
 
Ryan ChongAuthor Commented:
Thks for the assistance, aParser. You help me a lot here! :-)
0
 
torrid333Commented:
Is it still a good idea to use the MS SOAP toolkit?
I read something saying it was deprecated by .NET.

We use VB6 with no plans at the moment to switch to .NET.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now