Visual C++ .NET - Webservice y C++

 
Vista:

Webservice y C++

Publicado por JP (2 intervenciones) el 30/05/2011 23:29:27
Saludos

Alguien me puede decir si desde un proyecto en visual C++ con MFC se puede consumir un webservice y como se haría?http://www.lawebdelprogramador.com/btn_enviar.gif

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Consumir un servicio web con MFC

Publicado por Alejandro (265 intervenciones) el 09/02/2024 18:24:35
¡Saludos JP!

Sí, puedes consumir un servicio web desde un proyecto en Visual C++ con MFC (Microsoft Foundation Classes). Para lograr esto, puedes utilizar la biblioteca ATL (Active Template Library) junto con las clases `CInternetSession` y `CHttpConnection` proporcionadas por MFC. A continuación, te proporciono un ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <afxinet.h>
 
void ConsumirWebService() {
    // URL del servicio web
    CString strURL = _T("http://www.example.com/WebService.asmx");
 
    // Inicializar la sesión de Internet
    CInternetSession session;
 
    try {
        // Establecer la conexión HTTP con el servicio web
        CHttpConnection* pConnection = session.GetHttpConnection(strURL);
        CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("/MethodName"));
 
        // Establecer el encabezado de la solicitud
        CString strHeaders = _T("Content-Type: text/xml");
        pFile->SendRequest(strHeaders, static_cast<LPVOID>(LPCTSTR("<SOAP-ENV:Envelope ...>")), _tcslen(_T("<SOAP-ENV:Envelope ...>")));
 
        // Leer la respuesta del servicio web
        CString strResponse;
        DWORD dwRead;
        while (pFile->Read(&strResponse.GetBufferSetLength(4096), 4095, &dwRead))
            strResponse.ReleaseBuffer(dwRead);
 
        // Cerrar la conexión
        pFile->Close();
        delete pFile;
        pConnection->Close();
        delete pConnection;
 
        // Procesar la respuesta del servicio web (strResponse contiene la respuesta XML)
        // ...
 
        // Mostrar la respuesta (puedes imprimirlo o analizarlo según sea necesario)
        AfxMessageBox(strResponse);
    }
    catch (CInternetException* pEx) {
        // Manejar las excepciones de conexión
        TCHAR szError[1024];
        pEx->GetErrorMessage(szError, 1024);
        AfxMessageBox(szError);
        pEx->Delete();
    }
    session.Close();
}
 
int main() {
    AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0);
 
    // Llamar a la función para consumir el servicio web
    ConsumirWebService();
 
    return 0;
}

Asegúrate de reemplazar la URL y el método del servicio web en el ejemplo con los valores correctos para tu caso. También necesitarás analizar la respuesta XML según la estructura específica de tu servicio web.

Ten en cuenta que este es un ejemplo básico y que el manejo de errores y la interpretación de la respuesta pueden requerir un código más robusto dependiendo de la complejidad de tu servicio web.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar