Um auf einen Webserver zuzugreifen, ist es nötig,
Mit Hilfe des
Hypertext Transfer Protocols (HTTP)
eine Verbindung zu einer URL aufzubauen.
Im Folgenden wird Schritt für Schritt erklärt, wie
dies in Java zu bewerkstelligen ist.
HttpURLConnection
. Wird die Methode
openConnection()
dieser Klasse auf einer URL ausgeführt, so
erhält man eine Instanz.
public static void main(String args[]) throws Exception {
URL ebayAPIGatewayURL = new URL("http://open.api.ebay.com/shopping?");
// open HTTP URL Connection
HttpURLConnection ebayConn = (HttpURLConnection)ebayAPIGatewayURL.openConnection(); // Setup Connection Parameters
// -- we don't need User Interaction
ebayConn.setAllowUserInteraction(false);
// -- we need Input and Output
ebayConn.setDoInput(true);
ebayConn.setDoOutput(true); HTTP POST
. Aus diesem Grund muß die soeben erzeugte
HttpURLConnection
entsprechend konfiguriert werden.
// -- set HTTP Request Method to POST
ebayConn.setRequestMethod("POST");
setRequestProperty(String key, String
value)
möglich.
X-EBAY-API-REQUEST-ENCODING
,
X-EBAY-API-RESPONSE-ENCODING
,
X-EBAY-API-APP-ID
,
X-EBAY-API-CALL-NAME
und
X-EBAY-API-VERSION
// -- set HTTP Header Fields for Request
ebayConn.setRequestProperty("X-EBAY-API-REQUEST-ENCODING", "XML");
ebayConn.setRequestProperty("X-EBAY-API-RESPONSE-ENCODING", "XML");
ebayConn.setRequestProperty("X-EBAY-API-APP-ID", "PUT-YOUR-APP-ID-HERE");
ebayConn.setRequestProperty("X-EBAY-API-CALL-NAME", "FindItems");
ebayConn.setRequestProperty("X-EBAY-API-VERSION", "581");connect()
).
// after manipulating parameters that affect the connection
// to the remote resource, connect with it
try {
ebayConn.connect();
} catch (UnknownHostException uhe) {
System.out.println("Host not found, check your network connection!");
}java -Dhttp.proxyHost=192.168.9.123 -Dhttp.proxyPost=3128 callEbay
Zu Demonstrationszwecken soll verschaulicht werden, wie die Ausgabe von Daten auf die Netzwerkverbindung sowie das Einlesen von Daten von der Netzwerkverbindung bewerkstelligt werden kann.
Es soll eine XML-Datei auf die Netzwerkverbindung
übertragen werden. Diese Datei wird zunächst mit
einem
BufferedReader
eingelesen.
// read our XML Document from File
BufferedReader XMLFile =
new BufferedReader (new FileReader("callEbayRequest.xml"));
Für die Ausgabe von Daten auf die Netzwerkverbindung
kann ein
OutputStreamWriter
verwendet werden. Dieser wird dann etwa Zeile für
Zeile mit der Eingabedatei befüllt.
// write our XML Dorcument to the output stream
OutputStreamWriter out = new OutputStreamWriter(
ebayConn.getOutputStream());
String line="";
while ((line = XMLFile.readLine()) != null){
out.write(line);
}
out.close();
Das Einlesen von Daten aus einer Netzwerkverbindung
erfolgt ähnlich. Es wird ein
BufferedReader
erzeugt und mit einem
InputStreamReader
der Netzwerkverbindung verbunden. Danach wird der
Puffer zeilenweise ausgelesen und auf
stdout
ausgegeben.
// get an InputStream that we can read from
//InputStream myInSt = ebayConn.getInputStream();
// for efficiency reasons, read in the InputStream with a BufferedReader
BufferedReader inBuf = new BufferedReader(
new InputStreamReader(
ebayConn.getInputStream()));
String inputLine;
// print the answer on the command line
while ((inputLine = inBuf.readLine()) != null)
System.out.println(inputLine);
inBuf.close();Am Ende wird die Netzwerkverbindung wieder geschlossen.
// disconnect at the end
ebayConn.disconnect();
