• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1211
  • 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
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
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

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

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