Java HTTP Request auführen

Xawotal

Cadet 3rd Year
Registriert
März 2015
Beiträge
60
Hallo, ich verzwifele daran, einen einfach HHTP GET oder POST Request auszuführen... Ich verstehe einfach nicht, wie die HTTP Klassen funktionieren... Wäre nett wenn mir das jemand zeigen könnte...
In PHP funktioniert es ja schon:
PHP:
$options = array(
    'http' => array(
        //'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
Okay, den Header hab ich mal vom Scriptschnipsel auskommentiert, den brauch ich noch nicht.
Die Werte lassen sich einfach in ein Array $data schreiben.
$url ist die url.

Wie konvertiere ich sowas nach Java? Wie wird dort ein HTTP Request ausgeführt? Meine Rechereche im Internet hat bei mir nur Verwirrung ausgelöst :/
 
Dann copy&paste ich dir halt den Code, der da schon steht:

Code:
String url = "https://selfsolve.apple.com/wcResults.do";
		URL obj = new URL(url);
		HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

		//add reuqest header
		con.setRequestMethod("POST");
		con.setRequestProperty("User-Agent", USER_AGENT);
		con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

		String urlParameters = "sn=C02G8416DRJM&cn=&locale=&caller=&num=12345";
		
		// Send post request
		con.setDoOutput(true);
		DataOutputStream wr = new DataOutputStream(con.getOutputStream());
		wr.writeBytes(urlParameters);
		wr.flush();
		wr.close();

		int responseCode = con.getResponseCode();
		System.out.println("\nSending 'POST' request to URL : " + url);
		System.out.println("Post parameters : " + urlParameters);
		System.out.println("Response Code : " + responseCode);

		BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
		String inputLine;
		StringBuffer response = new StringBuffer();

		while ((inputLine = in.readLine()) != null) {
			response.append(inputLine);
		}
		in.close();
		
		//print result
		System.out.println(response.toString());

Keine Ahnung was daran nun nicht zu verstehen sein soll. Das darfst du dann gerne erläutern.

Noch einfacher geht's nur, wenn du eine Library wie Apache HTTP oder ein Framework wie Spring benutzt.
 
Zuletzt bearbeitet:
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
Wie bestimme ich den Useragenten? soll ich da einfach die variable USER_AGENT umändern?
Und die Zeile danach, wofür brauch ich die?
Und wie bestimme ich einen eigenen Header?

String urlParameters = "sn=C02G8416DRJM&cn=&locale=&caller=&num=12345";
Sieht mir nach GET-Request aus. Wie geht ein POST-Request?
 
Hast du dir diesen Link, den ich oben schon gepostet habe, angesehen? http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/
Such da mal nach USER_AGENT.

Wofür du die Zeile danach brauchst bzw. brauchen könntest? http://www.w3.org/International/questions/qa-accept-lang-locales bzw. https://de.wikipedia.org/wiki/Content_Negotiation

Dir ist schon klar, dass "User-Agent" und "Accept-Language" HTTP-Header sind? Und dass direkt darüber im Kommentar "add request header" steht? Daraus könnte man jetzt schließen, dass man sich so eine Zeile kopiert und reinschreibt was man will und dann einen neuen Header hinzugefügt hat.

"urlParamteres" sind einfach nur Request Parameter. Völlig egal ob es ein GET, POST, DELETE, PUT, PATCH oder sonstwas ist.

Nicht böse gemeint, aber vielleicht solltest du dich erst mal mit HTTP vertraut machen.
 
Zurück
Oben