This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

WebServices SOAP error while connecting to HPSM web service

Hi, 

I am trying to create a web services connector. The following code won't compile. It throws an error about not being able to perform XML serialize on the 'timings' parameter which is a custom class of that web service. But when I run the same code on C# on Visual Studio it works. Can anyone let me know how to fix it?

-----------------------------------------

VB code on one identity (doesn't work)

-------------------------------------------

#If Not SCRIPTDEBUGGER Then
Imports HPSM2
#End If

Public Function CCC_HPSM2_service(ByVal eOpName As String, ByVal eCorrID As String, ByVal eVersion As String, ByVal eEnv As String, ByVal eRespTM As Boolean, ByVal eServiceReturn As Integer, ByVal ePayload As String, ByVal eStatus As Integer, ByVal eMsg As String, ByVal eTiming As Timing()) As Integer
' create webservice class
Using ws As HPSM2.APSServer_Service = VID_GetWebService(Of HPSM2.APSServer_Service)()
Dim operationName As String = eOpName
Dim correlationID As String = eCorrID
Dim version As String = eVersion
Dim environment As String = eEnv
Dim respTimeMonitoring As Boolean = eRespTM
Dim serviceReturn As Int32 = Nothing
Dim payload As String = ePayload
Dim status As Int32 = Nothing
Dim message As String = Nothing
Dim timings As Timing() = Nothing


' call WebService
ws.service(operationName, correlationID, version, environment, respTimeMonitoring, serviceReturn, payload, status, message, timings)
End Using
Return eStatus
End Function

 

-----------------------------------

C# code on Visual studio (works)

------------------------------------

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace wsdltest
{
class Program
{
static void Main(string[] args)
{
APSServer.APSServer_Service apsServer = new APSServer.APSServer_Service();
int serviceReturn = 24081987;
var aTime = new APSServer.Timing();
aTime.id = "something";
aTime.endMillis = 100;
aTime.startMillis = 0;
aTime.subsystem = "aSubsystem";
aTime.threadID = "someThreadID";

var timing = new APSServer.Timing[] { aTime };
var message = "this is a message";
var payload = "payload";
var status = 24081987;

apsServer.service("testOp", "correlationID", "version", "environment", true, out serviceReturn, ref payload, out status, out message, out timing);

 

Console.WriteLine("service return = " +serviceReturn);
Console.WriteLine("message = " +message);
Console.WriteLine("status = " +status);
Console.WriteLine("timing = " + timing);
Console.WriteLine("payload = " + payload);
Console.ReadLine();
}
}
}

---------------------------

ERROR on the VB code

--------------------------

 

 

System.InvalidOperationException was unhandled
  HResult=-2146233079
  Message=There was an error generating the XML document.
  Source=System.Xml
  StackTrace:
       at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
       at System.Web.Services.Protocols.SoapHttpClientProtocol.Serialize(SoapClientMessage message)
       at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
       at wsdlVB.hpsm.APSServer_Service.service(String operationName, String correlationID, String version, String environment, Boolean respTimeMonitoring, Int32& serviceReturn, String& payload, Int32& status, String& message, Timing[]& timings) in C:\Users\admhishaam\Documents\Visual Studio 2015\Projects\wsdlVB\wsdlVB\Web References\hpsm\Reference.vb:line 87
       at wsdlVB.Module1.Main() in C:\Users\admhishaam\Documents\Visual Studio 2015\Projects\wsdlVB\wsdlVB\Module1.vb:line 24
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 
       HResult=-2147467262
       Message=Specified cast is not valid.
       Source=021yt0yo
       StackTrace:
            at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAPSServer_Service.Write5_service(Object[] p)
            at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer5.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
            at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
       InnerException: 
From among the parameters I pass to the "hpsm.service" method, it seems that on VB it is not happy with the parameter 'timing', and complains that it is not able to serialize it. 'timing' is a custom class of that method. Here is the method

Public Sub service(ByVal operationName As String, ByVal correlationID As String, ByVal version As String, ByVal environment As String, ByVal respTimeMonitoring As Boolean, ByRef serviceReturn As Integer, ByRef payload As String, ByRef status As Integer, ByRef message As String, ByRef timings() As Timing)
            Dim results() As Object = Me.Invoke("service", New Object() {operationName, correlationID, version, environment, respTimeMonitoring, payload})
            serviceReturn = CType(results(0),Integer)
            payload = CType(results(1),String)
            status = CType(results(2),Integer)
            message = CType(results(3),String)
            timings = CType(results(4),Timing())
        End Sub