문제

Windows 플랫폼의 C++에서 XmlRpc를 사용해야 합니다.내 친구들이 XmlRpc가 "광범위하게 사용 가능한 표준 기술"이라고 확신한다는 사실에도 불구하고 XmlRpc를 사용할 수 있는 라이브러리가 많지 않습니다.사실 저는 Windows에서 이 작업을 수행할 수 있는 라이브러리를 하나만 찾았습니다(그리고 "Windows에서 컴파일하려면 많은 작업을 수행해야 합니다)."라고 주장하는 또 다른 라이브러리도 있습니다.내가 찾은 라이브러리는 Chris Morley의 "XmlRpc++"였습니다.그러나 SSL은 지원하지 않습니다.

그러므로 내 질문은 다음과 같습니다.어떤 라이브러리를 사용해야 합니까?

도움이 되었습니까?

해결책

나는 내 자신의 C++ 라이브러리를 작성했습니다.sourceforge에서 사용할 수 있습니다.xmlrpcc4win

Chris Morley의 글을 사용하지 않고 제가 이 글을 쓴 이유는 다음과 같습니다.

  • Windows "wininet.lib" 라이브러리는 Http 요청을 처리하기 위한 모든 기능을 제공하므로 저는 그것을 사용하고 싶습니다.결과적으로 1700 LOC만 필요했습니다.
  • "wininet.lib" 및 이에 따른 내 구현은 HTTPS를 지원합니다.
  • Chris Morley의 STL 컨테이너 사용은 상당히 비효율적이었습니다(Chris, 이 글을 읽으시면 저에게 메일을 보내주세요).

다른 팁

내 자신의 라이브러리를 작성하기 전까지(위 참조) 내 대답은 다음과 같습니다.

현재, XmlRpc++ 라이브러리 Chris Morley의 것은 Windows에서 C++를 위한 유일한 공개 도메인/LPGL XmlRpc 구현입니다.

Linux용 C++ 구현이 몇 가지 있는데, 둘 중 하나를 Windows로 쉽게 이식할 수 있지만 아직까지 누구도 그렇게 하여 공개적으로 사용할 수 없게 만든 것 같습니다.또한 eczamy는 "XML-RPC 사양은 다소 간단하므로 자체 XML-RPC 클라이언트를 구현하는 것이 어렵지 않을 것"이라고 말합니다.

나는 꽤 많은 버그를 찾아 수정해야 했음에도 불구하고 Chris Morley의 라이브러리를 성공적으로 사용하고 있습니다.그만큼 도움말 포럼 이 프로젝트는 다소 활발하게 진행되고 있는 것 같지만, 아무도 이러한 버그를 수정하고 새로운 릴리스를 수행하지 않았습니다.저는 Chris Morley와 연락을 주고받았으며 그는 새 릴리스를 만들겠다는 막연한 희망을 갖고 있으며 이 stackOverflow 질문(아래/위 참조)에 기여했으며 대부분의 버그를 수정했다고 주장하지만 지금까지 그는 그렇지 않았습니다. 많은 버그를 수정한 릴리스를 만들었습니다.마지막 릴리스는 2003년이었습니다.

널리 지원된다고 생각되는 (그리고 간단하다고!) 프로토콜이 Windows + C++에서 그렇게 열악한 지원을 한다는 것은 나에게 실망스럽습니다.이 페이지를 읽는 누군가가 배턴을 집어들 수 있습니까?XmlRpc++를 인수하거나 Linux 구현 중 하나를 올바르게 포팅하세요.

XML-RPC에는 수십 가지 구현이 있습니다. 구현, 일부는 C++로 작성되었지만 대부분은 다른 언어로 작성되었습니다.예를 들어 XmlRpc++ 외에도 다음이 있습니다. C 및 C++용 XML-RPC.여기에는 어떻게 C 및 C++ 라이브러리용 XML-RPC를 사용하는 방법에 대해 설명합니다.

XML-RPC 사양은 다소 간단하므로 자체 XML-RPC 클라이언트를 구현하는 것이 어렵지 않습니다.말할 것도 없이, 기존 XML-RPC 구현을 C로 가져와서 C++ 프로젝트로 가져오는 것도 가능합니다.

XML-RPC 홈페이지 유용한 정보도 많이 제공합니다.

몇 가지 항목에 주목하고 싶었습니다.

  • XmlRpc++용 cvs 저장소의 소스는 OpenSSL을 지원합니다(시도해 본 적은 없지만 다른 개발자가 기여한 것입니다).

  • 보고된 버그의 대부분은 cvs에서 수정되었습니다.현재 Linux 시스템에 액세스할 수 없으므로 공식 릴리스를 만들지 않았습니다.

  • XmlRpc++ 공개 도메인이 아닙니다.저작권 및 라이센스(LGPL)가 있습니다.

고마워, 크리스 모리

https 및 기본 사용자 이름/비밀번호 인증을 사용하여 Tim의 xml rpc 버전을 얻을 수 있었습니다.

인증의 경우:

1) 사용자 이름과 비밀번호는 InternetConnect(...) 기능에 전달되어야 합니다.

2) "Authorization:"의 http 요청 헤더HttpSendRequest(...) 명령을 보내기 전에 기본 base64encoded(user:pass)"를 추가해야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top