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.
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.
Hi
I need help to build a WWSAPI c++ client to WCF-Service with callback from service. The most promising link was http://social.msdn.microsoft.com/Forums/en/wwsapi/thread/32c85bf8-e966-40a9-9caa-b7d13cb7406e
and therein the next to the last articel by Hao Xu (November13, 2009). But it was not working. Can someone help me with a more complete example and if in the used service (the well known sample duplex contract WCF service on MSDN.)something has to be changed.
Thanks Wolfgang
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>
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.
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
Hi,
Can I Change my Win XP home Edition to Professioanl Edition. Is there any tool to change this. Please help me.
Venkata
A candle loses nothing by lighting another candle.
Can someone provide a ref for the acceptable syntax here?
what does the '+' mean? Any other chars I can put there?
Thanks
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
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()); } } }
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:
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; }
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
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)
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)
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><core>
 <input>
 [...]
Is there a way to tell WsCall to not encode this parameter?
Thank you,
Olivier
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.
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
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!