Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

Werte aus XML-Datei lesen

(1/2) > >>

aretni:
Hallo,

Ich möchte den aktuellen Währungkurs von http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=USD&ToCurrency=EUR auslesen (in dem Beispiel, aktuellen Dollar Kurs) und Notes zur Verfügung stellen.
Wie mache ich das am besten in Java? Hat jemand vielleicht sowas schon mal programmiert und könnte mir ein Beispiel zukommen lassen?

Vielen Dank im voraus.

Gruß

Aretni

flaite:
Ich präferiere Jakarta Commons HTTPClient.
Eigentlich besteht die Aufgabe aus 2 Teilen:
1. XML als Stream herunterladen
2. Mit einer XML-Api das XML auslesen.

Hier ist ein code Ausschnitt für das herunterladen mit HTTPClient von jakarta commons:

--- Code: --- /**
* Downloads remote resource as Stream.
*
* @param url
*            url of remote resource.
* @return stream of remote resource, not closed here.
* @throws SpiHttpConnectionException
*             HTTP connection problems.
*/
private InputStream connect(final String url)
throws SpiHttpConnectionException {
Clogging.debug(getClass().getName() + ".connect(" + url + ")");
// Create a method instance.
method = new GetMethod(url);
method.setFollowRedirects(true);
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(HTTP_RETRY, false));

// Execute the method.
int statusCode;
try {
statusCode = client.executeMethod(method);

if (statusCode != HttpStatus.SC_OK) {
String msg = StringUtils.replaceOnce(
Constants.EXCEPTION_MSG_HTTP_STATUS,
"{param}", "" + statusCode);
msg = StringUtils.replaceOnce(msg, "{param}", method
.getStatusLine().toString());
Clogging.debug(msg);
throw new SpiHttpConnectionException(msg);

}
return method.getResponseBodyAsStream();

} catch (HttpException e) {

throw new SpiHttpConnectionException(

StringUtils.replace(Constants.EXCEPTION_MSG_HTTP,
"{param}", url));

} catch (IOException e) {
throw new SpiHttpConnectionException(StringUtils.replace(
Constants.EXCEPTION_MSG_IO, "{param}", url), e);

}

}

--- Ende Code ---

Für Schritt 2 empfehle ich die XPath features von JDom.

Gruß Axel

P.S.: Je konkreter die Fragen, desto zielführender die Antworten.

animate:
Eine ALternative wäre, dass Du Dir einen WebService Client aus der WSDL des Webservice (http://www.webservicex.net/CurrencyConvertor.asmx?wsdl) erzeugst/erzeugen lässt. Dann kommst Du gar nicht mehr mit XML in Kontakt.
Manche Java IDEs (ich kenne es von Netbeans) können Clients erzeugen, wenn man ihnen die WSDL gibt.

flaite:
... wobei Client seitige Webservices erst ab Notes 8 unterstützt werden.
Vielleicht sollte ich meine Lösung wirklich mal öffentlich durchprogrammieren.

Die Vorteile sind:
- der generierte Code ist alles andere als einfach zu verstehen.
- mein Vorschläg funktioniert für SOAP und REST Webservices. Eine Erweiterung auf nicht-XML Formate (z.B. JSON, komma-separierte Listen, whatever) ist einfach. Sowohl REST als auch nicht-XML Formate für Webservices sind relativ weit verbreitet. Ich hab letztes Jahr einen Kunden mit dem Business News Dienst Factiva verbunden und die boten manche Webservices NUR als SOAP UND andere NUR als REST an, was ich übrigens merkwürdig fand.

Gruß Axel

aretni:
Da ich noch ein blutiger Anfänger bin, weiß ich nun nicht mehr weiter. Hab den Tipp mit der WSDL-Datei angenommen und folgendes kam raus:

Mein Agent:
#######
initialize:
Sub Initialize
   Call GetCurrency("USD")
End Sub
#######
GetCurrency:
Sub GetCurrency(waehrung As String)
   sWSDL = "http://www.webservicex.net/CurrencyConvertor.asmx?wsdl"
   Set Client =CreateObject("MSSOAP.SoapClient")
   Call Client.mssoapinit (sWSDL)
   result = Client.****
-------------------
Was trage ich nun hinter "Client." ein um z.B. den aktuellen Kurs vom US Dollar (USD) zu bekommen?
----------------
'Output result to message box   
   Messagebox result, MB_OK, "Get Currency"
End Sub
#########

Kann mir jemand bei dem Problem weiterhelfen?

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln