Bericht ausführen von JasperReports Server mit der PHP-SOAP-client
Möchte ich einen Bericht ausführen von JasperReports Server über ein PHP-SOAP-client. Ich fand das Beispiel online, aber ich möchte anfügen einer XML-Datenquelle für den Bericht verwendet Daten, und ich bin nicht sicher, wie es sein sollte, korrekt angeschlossen.
Wie kann ich befestige meine XML-Datenquelle, um die SOAP-Anfrage, dass ist akzeptabel, Jasper Server?
public function requestReport($report, $format, $params) {
$params_xml = "";
foreach ($params as $name => $value) {
$params_xml .= "<parameter name=\"$name\"><![CDATA[$value]]></parameter>\n";
}
$request = "
<request operationName=\"runReport\" locale=\"en\">
<argument name=\"RUN_OUTPUT_FORMAT\">$format</argument>
<resourceDescriptor name=\"\" wsType=\"\"
uriString=\"$report\"
isNew=\"false\">
<label>null</label>
$params_xml
</resourceDescriptor>
</request>
";
$client = new SoapClient(null, array(
'location' => $this->url,
'uri' => 'urn:',
'login' => $this->username,
'password' => $this->password,
'trace' => 1,
'exception'=> 1,
'soap_version' => SOAP_1_1,
'style' => SOAP_RPC,
'use' => SOAP_LITERAL
));
$pdf = null;
try {
$result = $client->__soapCall('runReport', array(
new SoapParam($request,"requestXmlString")
));
$pdf = $this->parseReponseWithReportData(
$client->__getLastResponseHeaders(),
$client->__getLastResponse());
} catch(SoapFault $exception) {
$responseHeaders = $client->__getLastResponseHeaders();
if ($exception->faultstring == "looks like we got no XML document" &&
strpos($responseHeaders, "Content-Type: multipart/related;") !== false) {
$pdf = $this->parseReponseWithReportData($responseHeaders, $client->__getLastResponse());
} else {
throw $exception;
}
}
if ($pdf)
return $pdf;
else
throw new Exception("Jasper did not return PDF data. Instead got: \n$pdf");
}
Den vollständigen Beispiel, das ich hier gefunden https://gist.github.com/26205
Dem Ziel, Sie zu erstellen, so etwas wie dieses:
- Fragst du für jemand zu schreiben, den code für Sie? Du musst bohren Sie unten Ihre Frage ein bisschen mehr als "ich möchte ein Beispiel von meinem gesamten Projekt".
- Nein, brauchen nur zu wissen, wie die Anlage von XML-Daten in PHP, die akzeptabel ist für Jasper Server. Der rest ist fast fertig und wird als Open Source veröffentlicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist mehr ein Kommentar als eine Antwort, aber vermutlich hilfreich. Es gibt eine Bibliothek namens WSO2 WSF/PHP:
Ich glaube, Sie suchen nach Binäre Anlage (MTOM).
Folgende links könnten nützlich sein, als gut:
Auf Ihrer eigenen Website Sie haben auch einige Beispiele zur integration mit Web Services mittels php.
Gibt es eine Hilfe dafür?
SOAP
Anforderung keine Anlage unterstützen.Die Idee ist, wie Sie die Bearbeitung Ihrer Anfrage.
Die einzige Art, wie ich mit SOAP-Anfragen mit Anlagen ist zu
Base64 Encode
die Daten angehängt werden, und fügen Sie einen Text-Knoten.Fügen Sie das tag mit dem Attribut
encoded=
"true/false"
. Wenn Ihr den Inhalt einer Datei, geben Sie den Namen der Datei in der Anfrage.In der server-Seite, wenn Sie den Knoten mit einem Attribut
encoded="true"
, können Sie die Daten aus dem Knoten, Base64Decode und tun, was immer Sie brauchen.Die Idee von Base64 ist, um viele Sonderzeichen, die eine SOAP-Anforderung nicht unterstützt Anfrage. Einige SOAP-Prozessoren haben die Möglichkeit, mit "
encoded
" - Attribut.Sie möchten, um eine xml-Datei in Ihre SOAP-Abfrage, oder eine Antwort?
Könnten Sie codieren base64-wie in E-Mails und dann müssen die Benutzer am anderen Ende, Sie zu entschlüsseln.
Dann fügen Sie es einfach in einem separaten xml-Tags in Ihre SOAP-Abfrage/Antwort.