Domanda

Devo utilizzare XmlRpc in C++ su una piattaforma Windows.Nonostante i miei amici mi assicurino che XmlRpc è una "tecnologia standard ampiamente disponibile", non ci sono molte librerie disponibili per questo.In effetti ho trovato solo una libreria per farlo su Windows (più un'altra che afferma "dovrai fare molto lavoro per farlo compilare su Windows).La libreria che ho trovato era "XmlRpc++" di Chris Morley.Tuttavia, non ha il supporto per SSL.

La mia domanda quindi è:quale libreria dovrei usare?

È stato utile?

Soluzione

Ho scritto la mia libreria C++.È disponibile su sourceforge:xmlrpcc4win

Il motivo per cui l'ho scritto invece di usare quello di Chris Morley è che:

  • La libreria "wininet.lib" di Windows offre tutte le funzionalità per gestire le richieste HTTP, quindi preferisco usarla.Di conseguenza, mi servivano solo 1700 LOC.
  • "wininet.lib", e quindi la mia implementazione, supporta HTTPS
  • L'uso dei contenitori STL da parte di Chris Morley era piuttosto inefficiente (Chris, mandami una mail se leggi questo).

Altri suggerimenti

Fino a quando non ho scritto la mia libreria, (vedi sopra) ecco la mia risposta:

Attualmente, il Libreria XmlRpc++ di Chris Morley è l'unica implementazione XmlRpc di pubblico dominio/LPGL per C++ su Windows.

Esistono un paio di implementazioni C++ per Linux, entrambe presumibilmente potrebbero essere facilmente portate su Windows, ma il fatto sembra essere che nessuno lo abbia ancora fatto e reso pubblicamente disponibile.Inoltre, come dice eczamy, "La specifica XML-RPC è piuttosto semplice e non sarebbe difficile implementare il proprio client XML-RPC."

Sto utilizzando con successo la libreria di Chris Morley, nonostante abbia dovuto trovare e correggere numerosi bug.IL Forum di aiuto per questo progetto sembra essere in qualche modo attivo, ma nessuno ha corretto questi bug e rilasciato una nuova versione.Sono stato in corrispondenza con Chris Morley e lui ha vaghe speranze di fare una nuova versione, e ha contribuito a questa domanda su StackOverflow (vedi sotto/sopra) e afferma di aver corretto la maggior parte dei bug, ma finora non l'ha fatto ha rilasciato una versione che risolve numerosi bug.L'ultima uscita risale al 2003.

È deludente per me che un protocollo apparentemente ampiamente supportato (e semplice!) abbia un supporto così scarso su Windows + C++.Per favore, qualcuno che sta leggendo questa pagina può raccogliere il testimone e ad es.assumere il controllo di XmlRpc++ o eseguire correttamente il porting di una delle implementazioni Linux.

Esistono dozzine di implementazioni dell'XML-RPC implementazioni, alcuni in C++, ma la maggior parte in altri linguaggi.Ad esempio, oltre a XmlRpc++ c'è anche XML-RPC per C e C++.Ecco un COME su come utilizzare la libreria XML-RPC per C e C++.

La specifica XML-RPC è piuttosto semplice e non sarebbe difficile implementare il proprio client XML-RPC.Per non parlare del fatto che sarebbe anche possibile prendere un'implementazione XML-RPC esistente in C e inserirla nel tuo progetto C++.

L'XML-RPC pagina iniziale fornisce anche molte informazioni utili.

Volevo solo notare un paio di elementi:

  • Il sorgente nel repository cvs per XmlRpc++ ha il supporto per OpenSSL (anche se non l'ho provato, è stato fornito da un altro sviluppatore).

  • La maggior parte dei bug segnalati vengono risolti in cvs;Al momento non ho accesso a una macchina Linux, quindi non ho rilasciato una versione ufficiale.

  • XmlRpc++ non è di pubblico dominio.È protetto da copyright e concesso in licenza (LGPL).

Grazie, Chris Morley

Sono riuscito a far funzionare la versione di Tim di xml rpc con https e con l'autenticazione di base di nome utente/password.

Per l'autenticazione:

1) il nome utente e la password devono essere passati alla funzione InternetConnect(...).

2) un'intestazione della richiesta http di "Autorizzazione:È necessario aggiungere base64encoded(user:pass)" prima di inviare il comando HttpSendRequest(...).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top