xmlrpc 예제

이제 실험을 시작하고 URL이 잘못되면 (HTTP 상태가 변경됨), 잘못된 XML을 보낼 때, 존재하지 않는 호출 메서드를 시도할 때 어떤 일이 발생하는지 확인할 수 있습니다. 여기서는 이러한 모든 예제를 거치지 않을 것이지만, 예를 들어 존재하지 않는 사용자의 UUID를 요청할 때 어떻게 됩니까? 일반적인 데이터 형식은 아래 표시된 예제 값으로 XML 등가물로 변환됩니다: 다음 예제에서는 잘못된 URI를 제공하여 의도적으로 프로토콜 오류를 발생시킵니다. 서버에 연결합니다. 자카르타 HTTP 클라이언트를 사용하려면 어떻게 해야 합니까? 기본적으로 한 줄만 추가해야 합니다. 서버 코드: HTTP 프록시를 통해 XML-RPC 서버에 액세스하려면 사용자 지정 전송을 정의해야 합니다. 다음 예제에서는 이 클래스의 사용 예제를 다음과 같은 방법을 보여 주며 있습니다. 서버 코드: HTTP 응답은 여전히 200이지만 XML 페이로드에는 요소 대신 요소가 포함됩니다. 클라이언트 코드에서 이 세부 정보가 작동하는 방식에 따라 사용하는 라이브러리 함수에 따라 달라집니다. 예를 들어 파이썬에서 호출자는 오류 예외를 얻지만 Java에서는 xmlRpcExcption (HTTP 예외도 처리)의 일부입니다. GitHub의 일부 샘플에서 오류 처리 예제를 포함했습니다. 최근에 개발된 서버는 gRPC와 같은 최신 기술을 기반으로 원격 프로시저 호출을 제공할 것입니다. 그러나 기존 서비스에 액세스하려면 XML-RPC 클라이언트를 작성하거나 지원해야 할 수도 있습니다. 파이썬 클라이언트 simpleExampleWithErrors1.py 발생할 수있는 여러 가지 문제의 예를 보여줍니다.

오류가 클라이언트에 다시 보고되는 방법은 사용하는 서버와 XML-RPC 라이브러리에 따라 다릅니다. 이 간단한 예제는 실제로 그렇게 간단하지 않습니다. 이 예제 (simpleExample1.py)에 전체 코드와 상황이 잘못되었을 때 발생하는 상황을 보여주는 또 다른 복잡한 예제 (simpleExampleWithErrors1.py)를 포함시켰습니다. 이러한 예제를 구체적으로 만들기 위해 다음과 같은 메서드 호출을 지원하는 Python 3에 매우 간단한 XML-RPC 서버를 작성했습니다. 응답을 처리합니다. 이 래퍼 접근 방식의 예는 복잡한 Go 예제를 참조하십시오. C를 사용하는 경우 현재 최상의 옵션은 xmlrpc-c입니다. 여기에서 예제 프로그램을 찾을 수 있습니다.

또한 xml 인코딩 / 디코딩 함수를 사용하는 작은 PHP 7 예제를 만들었습니다. 이러한 예제를 따르려면 GitHub에서 코드를 찾을 수 있습니다. XML-RPC에서 클라이언트는 XML-RPC를 구현하고 HTTP 응답을 받는 서버에 HTTP 요청을 전송하여 RPC를 수행합니다. 호출에는 여러 매개 변수와 하나의 결과가 있을 수 있습니다. 프로토콜은 매개 변수 및 결과에 대한 몇 가지 데이터 형식을 정의합니다. 이러한 데이터 형식 중 일부는 중첩과 같은 복잡한 데이터 형식입니다. 예를 들어 5개의 정수 배열인 매개 변수를 가질 수 있습니다. base64 바이트 개체를 수락하고 인스턴스의 새 데이터로 디코딩합니다.

boxcar 메서드 호출에 사용되는 개체를 만듭니다. 서버가 호출의 최종 대상입니다. 결과 개체에 대해 호출할 수 있지만 즉시 None을 반환하고 호출 이름과 매개 변수만 MultiCall 개체에 저장합니다. 개체 자체를 호출하면 저장된 모든 호출이 단일 system.multicall 요청으로 전송됩니다. 이 호출의 결과는 생성기입니다. 이 생성기를 반복하면 개별 결과가 생성됩니다. ServerProxy 인스턴스에는 XML-RPC 서버에서 허용하는 각 원격 프로시저 호출에 해당하는 메서드가 있습니다. 메서드를 호출하면 이름과 인수 시그니처(예: