2009-07-27 4 views
0

Ich habe einen soap4r Client für einen Webdienst eingerichtet, und es funktioniert ziemlich gut. Wir verwenden es, um Daten von einer Datenbank an eine andere zu senden (bitte nicht darum zu fragen ... Ich weiß, dass es nicht optimal ist), aber wir sind nicht ganz sicher, ob die Zuordnung korrekt ist, daher ist es oft sehr praktisch das XML, das ein bestimmter Datensatz erzeugen würde.Generieren Sie XML mit soap4r, ohne den Webservice aufzurufen?

Natürlich ist das möglich - wenn Sie $DEBUG setzen, liefert soap4r Sie mit einem netten Dump des XML, das über die Leitung geht. Sie können sogar das "Gerät" (Datei) festlegen, an das Sie es senden möchten.

Allerdings möchte ich in der Lage sein, das XML zu erhalten, das generiert wird, ohne tatsächlich den Webdienst aufrufen zu müssen.

Gibt es eine Möglichkeit, dies zu tun? Grepping herum, ich habe eine Vielzahl von obj2soap und ähnliche Methoden gefunden, aber keiner von ihnen scheint ganz der eine zu sein, den ich will.

Antwort

1

Eine indirekte Antwort: Vielleicht möchten Sie sich handsoap ansehen. Es ist schneller und versucht mehr Ruby-artig zu sein. Es verwendet Builder-ähnliche XML-Generierung - aber Sie müssen alles selbst generieren. Es ist mehr wie eine Toolbox, um Ihren Client sauber zu schreiben. Auf diese Weise wissen Sie, was erzeugt wurde (und kann es leicht überprüfen).

Eine weitere Option ist $ DEBUG gesetzt und es danach wieder her:

$REMEMBER_DEBUG_STATE = $DEBUG 
$DEBUG = true 
# call soap (and have your XML generated) 
$DEBUG = $REMEMBER_DEBUG_STATE 

Diese auf eine schöne Funktion wie folgt extrahiert werden:

def with_debug_output 
    remember = $DEBUG 
    $DEBUG = true 
    yield if block_given? 
    $DEBUG = remember 
end 

und dann verwenden:

with_debug_output do 
    # call soap 
end 
+0

Ich bin nicht daran interessiert, Pferde Midstream zu ändern, also muss ich bei soap4r bleiben. Ich weiß über $ DEBUG, aber ich möchte den Dienst nicht anrufen; Ich möchte nur den XML-Code abrufen, der generiert worden wäre. –

Verwandte Themen