Quantcast
Channel: Windows Desktop Web Services API (webservices.dll) forum
Viewing all 213 articles
Browse latest View live

How to add web reference in VS2010?

$
0
0

I am writing a dll and need to add a reference to asmx service. when i rightclick my project the "add service reference" is missing.

Please help.


WWSAPI c++ client to WCF-Service with callback from service

Deploying Webservice to IIS

$
0
0

I have a .net V4.0 web service that needs to be deployed to IIS, but when I attempt to call my web service on IIS I get the following error,

"Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation.Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application"

I do not get this error when I run from visual studio, one thing I should note is that this error is coming from a .net V2.0 dll (web service works on IIS without the dll) that I have in the project (which was created in powerbuilder then deployed to .net). The dll contains nothing visual. I have tried placing the below into the web.config and it does not help. Maybe I am not understanding something critical when it comes to .NET 2.0 and 4.0 compatibility. 

<startup useLegacyV2RuntimeActivationPolicy="true">               
  <supportedRuntime version="v4.0" />     
  </startup>

IIS reset causes dll unregistering

$
0
0

Hi All,

Dlls are unregistering after IIS reset, we are using third party dll and it is getting unregistered if we are resetting IIS on servers. Please advise me how can i trouble shoot it, what is the reason for dll's getting unregistered.

Big wsdl file causes HTTP_GET MetadataExchange 0x803d0008 A quota was exceeded failure.

$
0
0

Hi,

I wrote a Web Service by WWSAPI, it uses WS_METADATA_EXCHANGE_TYPE_HTTP_GET to do metadata exchange.

It works great when wsdl is less then 64K, when the wsdl is bigger then 64K, I got 0x803d0008 A quota was exceeded error.

I have tried WS_SERVICE_ENDPOINT_PROPERTY_HEAP_MAX_SIZE and WS_CHANNEL_PROPERTY_MAX_BUFFERED_MESSAGE_SIZE without help.

Any idea?

Thanks

Win Xp home Edition to Professional Edition

$
0
0

Hi,

Can I Change my Win XP home Edition to Professioanl Edition. Is there any tool to change this. Please help me.

Venkata

Windows Web Services API and REST

net.tcp://+/example syntax

$
0
0

Can someone provide a ref for the acceptable syntax here?

what does the '+' mean?  Any other chars I can put there?

Thanks


I am having trouble with WWSAPI generating c and h files.

$
0
0

Hello folks,

Does anyone understand why I would see the following error message when attmpting to create my *.c and *.h files with WSUTIL?

I know this is not really an MFC or C++ question, but I am not sure where to post it.

Technically, I am running WSUTIL so I can create the *.c and *.h file for my application, so it is somewhat related to my MFC application.

Anyway, the error message I see is:

error WSUTIL0041 internal compiler error:  'Index was outside of the bounds of the array.'

The Web Service belongs to a third party.

I have successfully used the WSDL in SOAPUI to invoke the web service.

I presume there is something wrong in the schema. But I have no idea where to start, or what I should be looking for.

I cannot find any references to WSUTIL error messages.

The XSD document had a number of arrays that contained maxoccurs='unbounded'. I changed all of these to maxoccurs='10' and still no joy.

There is a lot of information at the site http://msdn.microsoft.com/en-us/library/windows/desktop/dd815349(v=vs.85).aspx, but there is no reference to error messages or error numbers.

Thanks in advance for any ideas.


Cameron Conacher

errorCode=0x803d0005 WWSAPI with EWS , 'Unauthorized request.

$
0
0

Hi all

I have a problem with WWSAPI & EWS with this code, and when request to server always a error "

The server returned HTTP status code '401 (0x191)' with text 'Unauthorized'.
The requested resource requires user authentication." I used C# with EXchangeSevervice (below ), It's work fine. I think it relate tocertificate. Please help me, thanks.

int _tmain(int argc, _TCHAR* argv[])
{
	HRESULT hr = NOERROR;
	WS_ERROR* error = NULL;
	WS_HEAP* heap = NULL;
	WS_SERVICE_PROXY* proxy = NULL;

	WS_CHANNEL_PROPERTY channelProperties[4]; // hold up to 4 channel properties
	ULONG channelPropertyCount = 0;

	WS_ENVELOPE_VERSION soapVersion = WS_ENVELOPE_VERSION_SOAP_1_1;
	channelProperties[channelPropertyCount].id = WS_CHANNEL_PROPERTY_ENVELOPE_VERSION;
	channelProperties[channelPropertyCount].value = &soapVersion;
	channelProperties[channelPropertyCount].valueSize = sizeof(soapVersion);
	channelPropertyCount++;

	WS_ADDRESSING_VERSION addressingVersion = WS_ADDRESSING_VERSION_TRANSPORT;
	channelProperties[channelPropertyCount].id = WS_CHANNEL_PROPERTY_ADDRESSING_VERSION;
	channelProperties[channelPropertyCount].value = &addressingVersion ;
	channelProperties[channelPropertyCount].valueSize = sizeof(addressingVersion );
	channelPropertyCount++;

	DWORD dwWS_HTTP_HEADER_AUTH_SCHEME_NEGOTIATE = WS_HTTP_HEADER_AUTH_SCHEME_NEGOTIATE;
	WS_SECURITY_BINDING_PROPERTY rgSecBindingProp[1];
	rgSecBindingProp[0].id = WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_SCHEME;
	rgSecBindingProp[0].valueSize = sizeof(DWORD);
	rgSecBindingProp[0].value = (void*)&dwWS_HTTP_HEADER_AUTH_SCHEME_NEGOTIATE;
////////////////////////////////////////////////////////////////////////////////////////////////////


	WS_STRING_WINDOWS_INTEGRATED_AUTH_CREDENTIAL intAuthCredential = {}; // zero out the struct 
	WS_STRING userName = WS_STRING_VALUE(L"myaccount");
	WS_STRING passWord = WS_STRING_VALUE(L"mypass");
	intAuthCredential.credential.credentialType = WS_STRING_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE; 
	intAuthCredential.username = userName;
	intAuthCredential.password = passWord;
	WS_HTTP_HEADER_AUTH_SECURITY_BINDING  authBinding = {};
	authBinding.binding.bindingType = WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TYPE;
	authBinding.clientCredential =&intAuthCredential.credential;
	authBinding.binding.properties = rgSecBindingProp;
	authBinding.binding.propertyCount = WsCountOf(rgSecBindingProp);

	//ignore some ssl errors
	DWORD dwIgnoreCnSertValue = WS_CERT_FAILURE_CN_MISMATCH;
	WS_SECURITY_BINDING_PROPERTY rgSslProp[1];
	rgSslProp[0].id = WS_SECURITY_BINDING_PROPERTY_CERT_FAILURES_TO_IGNORE;
	rgSslProp[0].valueSize = sizeof(DWORD);
	rgSslProp[0].value = (void*)&dwIgnoreCnSertValue;

  

	// declare and initialize an SSL transport security binding
	WS_SSL_TRANSPORT_SECURITY_BINDING sslBinding = {}; // zero out the struct
	sslBinding.binding.bindingType = WS_SSL_TRANSPORT_SECURITY_BINDING_TYPE; // set the binding type
	sslBinding.binding.properties = rgSslProp;
	sslBinding.binding.propertyCount =WsCountOf(rgSslProp);

	// declare and initialize the array of all security bindings
	WS_SECURITY_BINDING* securityBindings[2] = { &sslBinding.binding, &authBinding.binding };

	// declare and initialize the security description
	WS_SECURITY_DESCRIPTION securityDescription = {}; // zero out the struct
	securityDescription.securityBindings = securityBindings;
	securityDescription.securityBindingCount = WsCountOf(securityBindings);
	securityDescription.properties = NULL;
	securityDescription.propertyCount = 0;
      
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	 
	WS_STRING url=WS_STRING_VALUE(L"https://mycompany/ews/Exchange.asmx");
	int result = 0;
	WS_ENDPOINT_ADDRESS address = {}; 
	address.url=url; 
	// Create an error object for storing rich error information
	hr = WsCreateError(
		NULL, 
		0, &error);
	if (FAILED(hr))
	{
		return hr;
	}

	// Create a heap to store deserialized data
	hr = WsCreateHeap(
		/*maxSize*/ 8192, 
		/*trimSize*/ 512, 
		NULL, 
		0, 
		&heap, 
		error);
	if (FAILED(hr))
	{
		return hr;
	}

	// Create the proxy
	hr = WsCreateServiceProxy(
		WS_CHANNEL_TYPE_REQUEST, 
		WS_HTTP_CHANNEL_BINDING, 
		&securityDescription,
		NULL, 
		0, 
		channelProperties,
		channelPropertyCount,&proxy, 
		error);
	if (FAILED(hr))
	{
		return hr;
	}
	hr = WsOpenServiceProxy(
		proxy, &address, 
		NULL, 
		error);
	if (FAILED(hr)) 
	{ 
		WsFreeServiceProxy(proxy); 
		WsFreeHeap(heap); 
		WsFreeError(error); 
		return hr; 
	} 
	ResolveNamesType ReqType; 
	ReqType.UnresolvedEntry = L"test";
	ReqType.SearchScope = ResolveNamesSearchScopeTypeActiveDirectory;
	ReqType.ContactDataShape=DefaultShapeNamesTypeIdOnly;
	ReqType.ReturnFullContactData = true;
	ReqType.ParentFolderIds = NULL;
	ReqType.ParentFolderIdsCount = 0;
    ResolveNamesType_Init(&ReqType);

	ResolveNamesResponseType* pRespType;
  
	hr = ExchangeServiceBinding_ResolveNames(proxy,
		&ReqType,&pRespType,
		heap,
		NULL,
		0,
		NULL,
		error);
WsCloseServiceProxy(proxy, NULL, error); 
	WsFreeServiceProxy(proxy); 
	WsFreeHeap(heap); 
	WsFreeError(error); 
	 }

C# code:

 class Program
    {
        static void Main(string[] args)
        {
            try
            {
                ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);

                service.UseDefaultCredentials = false;
                service.Credentials = new NetworkCredential("**", "******");
                service.Url = new Uri("https://mycompany/EWS/exchange.asmx");
                Console.WriteLine(service.Url);
                service.TraceEnabled = true; 
                EmailMessage message = new EmailMessage(service);
                message.Subject = "Hello from the EWS Managed API";
                message.Body = "Bau very ga";
                message.ToRecipients.Add("recipient..");
                //message.Save();
                message.SendAndSaveCopy();  
            }catch(Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }

Deserializing error when receiving a valid response (HRESULT : 0x803d0000 "The input data was not in the expected format or did not have the expected value")

$
0
0

Hi,

 I have followed the typical steps for generating the .c | .h files (used svcutil forhttps://api.betfair.com/global/v3/BFGlobalService.wsdl then wsutil). Then I wrote a small program to access the login method exposed by the service (that would happen in the BFGlobalService_login below). When this method is invoked I get the HRESULT given in the title. Querying the WS_ERROR I get the following details:

  • Error 0: Serialization failure occurred when reading an element with WS_READ_OPTION '2', name 'loginResponse' and namespace 'http://www.betfair.com/publicapi/v3/BFGlobalService/'.
  • Error 1: Serialization failure occurred when reading a field with WS_TYPE '26 (0x1A)', WS_FIELD_MAPPING '2', name 'Result' and namespace 'http://www.betfair.com/publicapi/v3/BFGlobalService/'.
  • Error 2: Serialization failure occurred when reading a field with WS_TYPE '26 (0x1A)', WS_FIELD_MAPPING '2', name 'header' and namespace ''.
  • Error 3: The attribute with name 'type' and namespace 'http://www.w3.org/2001/XMLSchema-instance' was not expected.

Trying the same thing from a quickly put together C# program works as expected.

Any help would be much appreciated.

class WsError
{
	WS_ERROR* m_h;

public:
	WsError() : m_h(0)
	{}

	~WsError()
	{
		if (0 != m_h)
			WsFreeError(m_h);
	}

	HRESULT Create(__in_ecount_opt(propertyCount) const WS_ERROR_PROPERTY* properties, __in ULONG propertyCount)
	{
		ASSERT(0 == m_h);
		return WsCreateError(properties, propertyCount, &m_h);
	}

	HRESULT GetProperty(__in WS_ERROR_PROPERTY_ID id,  __out_bcount(bufferSize) void* buffer,  __in ULONG bufferSize)
	{
		ASSERT(0 != m_h);
		ASSERT(0 != buffer);

		return WsGetErrorProperty(m_h, id, buffer, bufferSize);
	}

	template <typename T>
	HRESULT GetProperty(__in WS_ERROR_PROPERTY_ID id, __out T* buffer)
	{
		return GetProperty(id, buffer, sizeof(T));
	}

	HRESULT GetString(__in ULONG index, __out WS_STRING* string)
	{
		ASSERT(0 != m_h);
		ASSERT(0 != string);

		return WsGetErrorString(m_h, index, string);
	}

	operator WS_ERROR*() const
	{
		return m_h;
	}
};

class WsHeap
{
	WS_HEAP* m_h;

public:

	WsHeap() : m_h(0)
	{
	}

	~WsHeap()
	{
		if (0 != m_h)
			WsFreeHeap(m_h);
	}

	HRESULT Create(__in SIZE_T maxSize,  __in SIZE_T trimSize,  __in_opt const WS_HEAP_PROPERTY* properties,  __in ULONG propertyCount,  __in_opt WS_ERROR* error)
	{
		ASSERT(0 == m_h);

		return WsCreateHeap(maxSize, trimSize, properties, propertyCount, &m_h, error);
	}

	operator WS_HEAP*() const
	{
		return m_h;
	}

};

class WsServiceProxy
{
	WS_SERVICE_PROXY* m_h;

public:

	WsServiceProxy() : m_h(0)
	{}

	~WsServiceProxy()
	{
		if (0 != m_h)
		{
			Close(0,  0); 
			WsFreeServiceProxy(m_h);
		}
	}

	HRESULT Open(__in const WS_ENDPOINT_ADDRESS* address,  __in_opt const WS_ASYNC_CONTEXT* asyncContext,  __in_opt WS_ERROR* error)
	{
		ASSERT(0 != m_h);
		return WsOpenServiceProxy(m_h, address, asyncContext, error);
	}

	HRESULT Close(__in_opt const WS_ASYNC_CONTEXT* asyncContext,  __in_opt WS_ERROR* error)
	{
		ASSERT(0 != m_h);
		return WsCloseServiceProxy(m_h, asyncContext, error);
	}

	WS_SERVICE_PROXY** operator&()
	{
		ASSERT(0 == m_h);
		return &m_h;
	}

	operator WS_SERVICE_PROXY*() const
	{
		return m_h;
	}
};

class WsServiceHost
{
	WS_SERVICE_HOST* m_h;

public:

	WsServiceHost() : m_h(0)
	{}

	~WsServiceHost()
	{
		if (0 != m_h)
		{
			Close(0,0); 
			WsFreeServiceHost(m_h);
		}
	}

	HRESULT Create(__in_ecount_opt(endpointCount) const WS_SERVICE_ENDPOINT** endpoints, __in const USHORT endpointCount, 
				   __in_ecount_opt(servicePropertyCount) const WS_SERVICE_PROPERTY* properties, 
				   __in ULONG propertyCount, __in_opt WS_ERROR* error)
	{
		ASSERT(0 == m_h);

		return WsCreateServiceHost(endpoints, endpointCount, properties, propertyCount, &m_h, error);
	}

	HRESULT Open(__in_opt const WS_ASYNC_CONTEXT* asyncContext, __in_opt WS_ERROR* error)
	{
		ASSERT(0 != m_h);

		return WsOpenServiceHost(m_h, asyncContext, error);
	}

	HRESULT Close(__in_opt const WS_ASYNC_CONTEXT* asyncContext,  __in_opt WS_ERROR* error)
	{
		ASSERT(0 != m_h);

		return WsCloseServiceHost(m_h, asyncContext, error);
	}

	operator WS_SERVICE_HOST*() const
	{
		return m_h;
	}
};

#define HR(expr) { hr = expr; if (FAILED(hr)) return hr; }


#include "stdafx.h"
#include "..\BFGlobalService.wsdl.h"
#include "..\WsHelpers.h"

HRESULT Login(__in PCWSTR url, __in PCWSTR user,  __in PCWSTR password,  __out WCHAR** token,  __in_opt WS_ERROR* error)
{
	ASSERT(nullptr != url );
	ASSERT(nullptr != user);
	ASSERT(nullptr != password);
	ASSERT(nullptr != token);

	HRESULT hr = S_OK;
	WsHeap heap;

	HR(heap.Create(8192, 512, nullptr, 0, error));

	WsServiceProxy serviceProxy;
	WS_SSL_TRANSPORT_SECURITY_BINDING sslBinding = {}; 
	sslBinding.binding.bindingType = WS_SSL_TRANSPORT_SECURITY_BINDING_TYPE; 
	
	WS_SECURITY_BINDING* securityBindings[1] = 	{ &sslBinding.binding };

	WS_SECURITY_DESCRIPTION securityDescription = { securityBindings, ARRAYSIZE(securityBindings) , nullptr, 0};

	WS_ENCODING encoding = WS_ENCODING_XML_UTF8;
	WS_ENVELOPE_VERSION soapVersion = WS_ENVELOPE_VERSION_SOAP_1_1;
	WS_ADDRESSING_VERSION addressingVersion = WS_ADDRESSING_VERSION_TRANSPORT;

	WS_CHANNEL_PROPERTY channelProperties[3] =
	{
		{WS_CHANNEL_PROPERTY_ENVELOPE_VERSION, &soapVersion, sizeof(soapVersion)},
		{WS_CHANNEL_PROPERTY_ADDRESSING_VERSION, &addressingVersion, sizeof(addressingVersion)},
		{WS_CHANNEL_PROPERTY_ENCODING, &encoding, sizeof(encoding)},
	};

	//HR(BFGlobalService_CreateServiceProxy(0, 	nullptr, 0, &serviceProxy, error));

	HR(WsCreateServiceProxy( WS_CHANNEL_TYPE_REQUEST, WS_HTTP_CHANNEL_BINDING,  &securityDescription, nullptr,0,  channelProperties,  ARRAYSIZE(channelProperties),   &serviceProxy,  error));

	WS_ENDPOINT_ADDRESS address = { {static_cast<ULONG>(wcslen(url)), const_cast<PWSTR>(url)}};

	HR(serviceProxy.Open(&address, nullptr, error));

	LoginReq loginRequest= {nullptr, 0, const_cast<PWSTR>(password), 0, const_cast<PWSTR>(user), 82};
	LoginResp* response = nullptr;
	HR(BFGlobalService_login(serviceProxy, &loginRequest, &response,heap, nullptr, 0, nullptr,error));

	if(response)
		delete response;

	HR(serviceProxy.Close(nullptr, error));
	return S_OK;
}

int _tmain(int argc, _TCHAR* argv[])
{
	HRESULT hr = S_OK;
	WsError error;
	HR(error.Create(0, 0)); 

	WCHAR* token(nullptr);
	hr = Login(L"https://api.betfair.com/global/v3/BFGlobalService",L"someuser", L"somepassword",&token,error);
	if(token)
	{
		delete[] token;
	}
	if(FAILED(hr))
	{
		ULONG stringCount = 0;
		HR(error.GetProperty(WS_ERROR_PROPERTY_STRING_COUNT, &stringCount));

		for (ULONG i = 0; i < stringCount; ++i)
		{
			WS_STRING string;
			HR(error.GetString(i, &string));
			wprintf(L"Error %d: %.*s\n", i, string.length, string.chars);
		}
	}
	return 0;
}


Save mail in exchange server with WWAPI (native code)

$
0
0

Hi All , I have a problem with send mail with exchange server.

MessageType emailMessage={0};

MessageType_Init(&emailMessage); 

emailMessage._base.Subject= scSubject;

BodyType bodyType;

bodyType.BodyType0=BodyTypeTypeHTML;

bodyType._value=scContent;  

emailMessage._base.Body=&bodyType;  

//Add the sender/recipient to the email message 

WCHAR *x1=L"doanthaibao@gmail.com"; 

EmailAddressType recipientEmailAddressType1={0};

EmailAddressType_Init(&recipientEmailAddressType1); 

recipientEmailAddressType1.EmailAddress= _wcsdup(x1); 

_ArrayOfRecipientsType_Choice _arrayOfRecipientsType_Choice;

_arrayOfRecipientsType_Choice.choice=_ArrayOfRecipientsType_Choice_Mailbox;

_arrayOfRecipientsType_Choice.u.Mailbox=&recipientEmailAddressType1; 

emailMessage.ToRecipients=&_arrayOfRecipientsType_Choice;

emailMessage.ToRecipientsCount=1;

EmailAddressType senderEmailAddressType={0};

EmailAddressType_Init(&senderEmailAddressType); 

senderEmailAddressType.EmailAddress=L"xxx";    // <--- Set the sender email address here

SingleRecipientType singleRecipientType;

singleRecipientType._choice.choice=_SingleRecipientType_Choice_Mailbox; 

singleRecipientType._choice.u.Mailbox=&senderEmailAddressType; 

emailMessage.From=&singleRecipientType;

 ///////////////////////Set recipient address;

CreateItemType emailToSave={0}; CreateItemType_Init(&emailToSave); 

_NonEmptyArrayOfAllItemsType_Choice _nonEmptyArrayOfAllItemsType_Choice;

_nonEmptyArrayOfAllItemsType_Choice.choice=_NonEmptyArrayOfAllItemsType_Choice_Message;

_nonEmptyArrayOfAllItemsType_Choice.u.Message=&emailMessage;

NonEmptyArrayOfAllItemsType nonEmptyArrayOfAllItemsType={0}; 

nonEmptyArrayOfAllItemsType._choicesCount=1;

nonEmptyArrayOfAllItemsType._choices=&_nonEmptyArrayOfAllItemsType_Choice;   

//Save file in Draft folder  DistinguishedFolderIdType distinguishedFolderIdType={0};

DistinguishedFolderIdType_Init(&distinguishedFolderIdType);  

distinguishedFolderIdType.Id=DistinguishedFolderIdNameTypedrafts; 

_TargetFolderIdType_Choice _targetFolderIdType_Choice;

_targetFolderIdType_Choice.choice= _TargetFolderIdType_Choice_DistinguishedFolderId;

_targetFolderIdType_Choice.u.DistinguishedFolderId= &distinguishedFolderIdType;

TargetFolderIdType targetFolderIdType={0}; TargetFolderIdType_Init(&targetFolderIdType);

targetFolderIdType._choice =_targetFolderIdType_Choice;    

emailToSave.Items=&nonEmptyArrayOfAllItemsType;

//'''''''''''''  emailToSave.SavedItemFolderId=&targetFolderIdType;//'''''''''''''    

emailToSave.MessageDisposition=MessageDispositionTypeSaveOnly; //'''''''''''

 CreateItemResponseType *createItemResponseType;  

hr=ExchangeServiceBinding_CreateItem(proxy,&emailToSave,&createItemResponseType,heap,NULL,0,NULL,error); 

If MessageDisposition  is MessageDispositionTypeSendAndSaveCopy or SentOnly The mail send ok, but with MessageDispositionTypeSaveOnly the mail can't send (can't save in draft folder) .( Because I want get Id message to attach this email).

Please help me!

Thanks


WWSAPI Populating the (soapenv:Header) when the generated function only fills in the body.

$
0
0

I'm trying to connect to a web service from a C++ app using WWSAPI.  I got the base connection working just fine.  My SOAP message has two parts though, a SOAPHeader (soapenv:Header) and a body (soapenv:Body).  the generated functions only fill in the body.  How do I set the Header information?  I am using WsAddCustomHeader to populate a message with the struct that contains the header data but I don't know what to do with this message as it is not a parameter in the generated function.

 

The generated wsdl.h file specifies the soap header and the function call:

//  input message soap header element is

//(WS_ELEMENT_DESCRIPTION*)&SOAPHeaderType_xsd.globalElements.auditInfo,

// operation: ICBC_Admin_whoAmI_Binder__whoAmI

HRESULT WINAPI ICBC_Admin_whoAmI_Binder__whoAmI(

    __in WS_SERVICE_PROXY* _serviceProxy,

    __in_opt __nullterminated WCHAR* loginUserId,

    __out_opt __deref __nullterminated WCHAR** replyData,

    __in WS_HEAP* _heap,

    __in_ecount_opt(_callPropertyCount) const WS_CALL_PROPERTY* _callProperties,

    __in const ULONG _callPropertyCount,

    __in_opt const WS_ASYNC_CONTEXT* _asyncContext,

    __in_opt WS_ERROR* _error)

 

WWSAPI Populating the (soapenv:Header) when the generated function only fills in the body.

$
0
0

I'm trying to connect to a web service from a C++ app using WWSAPI.  I got the base connection working just fine.  My SOAP message has two parts though, a SOAPHeader (soapenv:Header) and a body (soapenv:Body).  the generated functions only fill in the body.  How do I set the Header information?  I am using WsAddCustomHeader to populate a message with the struct that contains the header data but I don't know what to do with this message as it is not a parameter in the generated function.

The generated wsdl.h file specifies the soap header and the function call:

//  input message soap header element is

//(WS_ELEMENT_DESCRIPTION*)&SOAPHeaderType_xsd.globalElements.auditInfo,

// operation: ICBC_Admin_whoAmI_Binder__whoAmI

HRESULT WINAPI ICBC_Admin_whoAmI_Binder__whoAmI(

    __in WS_SERVICE_PROXY* _serviceProxy,

    __in_opt __nullterminated WCHAR* loginUserId,

    __out_opt __deref __nullterminated WCHAR** replyData,

    __in WS_HEAP* _heap,

    __in_ecount_opt(_callPropertyCount) const WS_CALL_PROPERTY* _callProperties,

    __in const ULONG _callPropertyCount,

    __in_opt const WS_ASYNC_CONTEXT* _asyncContext,

    __in_opt WS_ERROR* _error)

Include raw XML in a WsCall parameter

$
0
0

Hello,

I use a web service that want some XML contents in its "PresetContent" parameter:

<soapenv:Body><urn1:ChannelPresetLoad><urn1:ChannelID>0</urn1:ChannelID><urn1:PresetContent><!-- here : --><core><input>
        ...</input></core></urn1:PresetContent>

In my code, if I put this XML content in a WCHAR*, it will be html encoded:

WCHAR* presetContent = "<core><input>...</input></core>";
HRESULT hr = MyWebserviceBinding_ChannelPresetLoad(_serviceProxy, channelIo - 1, presetContent, _heap, NULL, 0, NULL, _error);

will generate this soap message:

POST / HTTP/1.1
Cache-Control: no-cache
Connection: Keep-Alive
Pragma: no-cache
Content-Type: text/xml; charset=utf-8
User-Agent: MS-WebServices/1.0
SOAPAction: ""
Content-Length: 13482
Host: 10.194.180.16:8080<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><ChannelPresetLoad xmlns="urn:dvs:webservices:venice"><ChannelID>0</ChannelID><PresetContent>&lt;core&gt;&#xD; &lt;input&gt;&#xD;

[...]

Is there a way to tell WsCall to not encode this parameter?

Thank you,

Olivier



What did I do wrong against WsGetHeapProperty to get the size of WS heap?

$
0
0

I've the following codes, however, I got E_INVALIDARG.. I was trying to get the current size of the WS heap. Can anyone help to point me out the issue ?

    WS_HEAP_PROPERTY* value = NULL;     HRESULT hr = WsGetHeapProperty(pMessageHeap, WS_HEAP_PROPERTY_ACTUAL_SIZE, value, sizeof(WS_HEAP_PROPERTY), NULL);

Thanks.


How to deploy WWS to IIS?

$
0
0
Hi! I have used Visual Studio 2010 to make a simple wws service from MSDN. How it deploy to IIS 7 on Windows 7?  

webservices.lib load problem

$
0
0

Hi all!
I wrote a application use WWSAPI connect to Exchange server (send mail) and does some things.I wrote this app in windows 7 , and now I want run this app in XP (of course I know WWSAPI doesn't support XP) for others function (not relate to wwsapi library), but this app don't run because I use load static webservices.dll 

#include "webservices.h"

#pragma comment(lib,"webservices.lib")

And it's crashed. I couldn't dynamic load webservices.dll  because in proxy class use many structs, enums belong to webservice.h

Can anyone tell me how to build this app run in XP without error?

Thanks

Bao Doan

 


errorCode=0x803d000e, The remote endpoint is not currently in service at this location, while using Windows SDK 7.0.

$
0
0

WS TRACE INFO:

...

129341042491894181,3340,3912,"sending message stop  ","message# (1)"
129341042491898726,3340,3912,"error","",0x803d000e,The remote endpoint is not currently in service at this location.
129341042491899042,3340,3912,"error","",0x0,The requested resource resides temporarily under a different URI.
129341042491899617,3340,3912,"error","",0x0,The server returned HTTP status code '302 (0x12E)' with text 'Found'.
129341042491907166,3340,3912,"error","",0x0,There was an error communicating with the endpoint at 'http://vmware-seattle.myonelogin.com/SAAS/API/1.0/SOA/MOL?wsdl'.
129341042491908305,3340,3636,"exit failed","WsCall",0x803d000e

 

WS client is running on Win7, WS service is running on a remote machine (Linux).

I can communicate with this end point from this Win7 machine using soapUI tool.

Relevant portion of WS client code looks like:

channelProperty[channelPropertyCount].id = WS_CHANNEL_PROPERTY_ENVELOPE_VERSION;
    channelProperty[channelPropertyCount].value = &soapVersion;
    channelProperty[channelPropertyCount].valueSize = sizeof(soapVersion);
    channelPropertyCount++;
   
    channelProperty[channelPropertyCount].id = WS_CHANNEL_PROPERTY_ADDRESSING_VERSION;
    channelProperty[channelPropertyCount].value = &addressingVersion ;
    channelProperty[channelPropertyCount].valueSize = sizeof(addressingVersion );
    channelPropertyCount++;
   
    // Create the proxy
    hr = WsCreateServiceProxy(
            WS_CHANNEL_TYPE_REQUEST,
            WS_HTTP_CHANNEL_BINDING,
            NULL,
            NULL,
            0,
            channelProperty,
            channelPropertyCount,
            &proxy,
            error);
    if (FAILED(hr))
    {
        goto Exit;
    }
   
    hr = WsOpenServiceProxy(
        proxy,
        &address,
        NULL,
        error);

How can I fix this issue?

Thx!

 

 

WWSAPI with EWS

$
0
0
I was wondering if anyone had some WWSAPI experience with Exchange Web Services. Any examples to share?
Viewing all 213 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>