?
Aloha,
ich möchte einen Webservice benutzen und habe folgendes Problem:
Von meiner Benutzeroberfläche aus wähle ich 'Webverweis hinzufügen ...' und gebe in dem aufpoppenden Assistenten die URL ein, die auf ?wsdl endet.
Nun muß ich mehrere Male ein Fenster wegklicken, in dem mit mitgeteilt wird 'Diese Seite enthält sowohl sichere als auch nicht sichere Objekte. Möchten Sie die nicht sicheren Objekte anzeigen?'
Hier klicke ich gefühlte zig-mal auf 'Ja' - irgendwann werden mir dann die vom Webservice zur Verfügung gestellten Methoden angezeigt. Nun klicke ich auf 'Verweis hinzufügen' und bekomme die Fehlermeldung 'SDL1025: input/output - Operationen mit unterschiedlichen Namespaces werden nicht unterstützt.'
Danach habe ich in meinem Projektverzeichnis aber eine .wsdl - Datei, in der ich die o.g. Namespaces angleiche, um über diesen SDL1025 hinwegzukommen.
Nun initialisiere ich in meiner Anwendung die Com-Schnittstelle, erzeuge eine Instanz der generierten Proxy-Klasse und rufe eine Methode des Webservice auf, das ganze sieht so aus:
class CCom // zum Initialisieren von COM
{
private :
HRESULT m_hr;
public:
CCom() : m_hr(E_FAIL)
{
}
HRESULT Initialize()
{
ATLASSERT(FAILED(m_hr));
return m_hr = CoInitialize(NULL);
}
~CCom()
{
if (SUCCEEDED(m_hr))
CoUninitialize();
}
};
using namespace MesoWebService3Service;
EXPORT void CALLBACK GetEwoDaten(const Anfrage &Anforderung, Antwort &Result)
{
CCom Com;
HRESULT hr = Com.Initialize();
if (!SUCCEEDED(hr))
{
MessageBox(NULL, "Com-Schnittstelle kann nicht initialisiert werden",
"Fehlermeldung:", MB_OK | MB_ICONERROR);
lstrcpy(Result.ha.sysMeld, "Zugriff auf Meso nicht möglich");
return;
}
CMesoWebService3Service service;
CComBSTR bstrResponse;
hr = service.abfrageMandanten(&bstrResponse);
if (FAILED(hr))
{
char FNr[10];
char FMeld[100] = "Methodenaufruf fehlgeschlagen\nFehlernummer: ";
_itoa(hr, FNr, 10);
lstrcat(FMeld, FNr);
sprintf_s(FNr, 10, " %X", hr);
lstrcat(FMeld, FNr);
MessageBox(NULL, FMeld,
"Fehlermeldung:", MB_OK | MB_ICONERROR);
lstrcpy(Result.ha.sysMeld, "Zugriff auf Meso nicht möglich");
MessageBoxW(NULL, bstrResponse, L"Antwort", MB_OK);
return;
}
}
Der Methodenaufruf gibt mir als Fehlercode 0x80004005 zurück, mit dem ich leider nix anfangen kann
Gibts hier eventuell jemanden, der mir weiterhelfen kann?