POST Request (HttpConnection)

Status
Nicht offen für weitere Antworten.

hdi

Top Contributor
Hey,
häng hier grad fest, weil ich mich mit Netzwerk-Programmierung überhaupt nicht auskenne.
Ich möchte gerne einen Post Request an eine Website schicken, genau genommen
soll's erstmal ein Login sein.

Ich habe mir dieses:

HttpClient - HttpClient Home

Package geholt, um das zu tun.
Leider stecke ich nun fest weil ich nicht genau weiss wie ich den Request abschicken soll.

die execute-Methode verlangt eine HttpConnection. Ich hab keine Ahnung was ich da
als Port eingeben soll... oder lieg ich grad voll daneben?

Hier mal mein Code:

[HIGHLIGHT="Java"]PostMethod post = new PostMethod(target.getLoginUrl());
NameValuePair[] data = {
new NameValuePair("txtAccountNumber_Account", login),
new NameValuePair("ptxtPassword_Account", pwd) };
post.setRequestBody(data);
HttpConnection conn = new HttpConnection("www.eineWebsite.com",
8080);
try {
conn.open();
post.execute(new HttpState(), conn);
} catch (IOException e2) {
e2.printStackTrace();
}[/HIGHLIGHT]

Ich weiss auch gar nicht wie ich überprüfen kann ob das hingehauen hat.
Ich kann mir zwar auch mit einer Methode von diesem Package den Response holen:

[HIGHLIGHT="Java"]InputStream in = post.getResponseBodyAsStream();[/HIGHLIGHT]

und das ist auch nicht null. Aber ich glaube nicht dass das so passt...

Bitte helft mir! Muss auch nicht mit Verwendung dieses Packages sein.
Danke :toll:
 
hallo,

das hier funktioniert:


[HIGHLIGHT="Java"]import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class HttpCommonsPost
{
private String url = null;

public void setURL(final String url)
{
this.url = url;
}

public String doPostRequest(final NameValuePair[] caNameValuePairArr)
{
String lReturn = "";
final HttpClient clHttpClient = new HttpClient();
BufferedReader lBufferedReader = null;
PostMethod lPostMethod = null;

try
{
lPostMethod = new PostMethod(this.url);
lPostMethod.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE, true);
lPostMethod.setRequestBody(caNameValuePairArr);
final int clReturnCode = clHttpClient.executeMethod(lPostMethod);

if (clReturnCode != HttpStatus.SC_NOT_IMPLEMENTED)
{
lBufferedReader = new BufferedReader(new InputStreamReader(lPostMethod.getResponseBodyAsStream()));
String lReadLine = null;

while (((lReadLine = lBufferedReader.readLine()) != null))
{
lReturn = lReturn.concat(lReadLine + "\r\n");
}
}
else
{
throw new Exception("Failed!");
}
}
catch (final Exception caException)
{
System.err.println("Exception: " + caException.getMessage());
}
finally
{
lPostMethod.releaseConnection();

if (lBufferedReader != null)
{
try
{
lBufferedReader.close();
}
catch (final Exception caException)
{
final Runtime clRuntime = Runtime.getRuntime();
clRuntime.gc();
}
}
}

return lReturn;
}
}[/HIGHLIGHT]


anwendung:

[HIGHLIGHT="Java"] HttpCommonsPost lApacheHttpCommonsPost = new HttpCommonsPost();
lApacheHttpCommonsPost.setURL("http://localhost");

NameValuePair[] lDataArr = { new NameValuePair("param1", "param1value"), new NameValuePair("param2", "param2value") };
String ret = lApacheHttpCommonsPost.doPostRequest(lDataArr);
System.out.println(ret);
[/HIGHLIGHT]


gruss, jan
 
Moin,

ich muss dieses Thema nochmal hochholen, da ich zur Zeit ein ähnliches Problem habe.
Ich hab mir jetzt auch schon die 3 Beispiele angeguckt, allerdings stocke ich schon bei den imports aus den Beispielen von raiL und jmar83.
Ich bekomme da ein package .. does not exist beim compilieren.

Muss ich hier vorher noch etwas anderes importieren ?
 
Ich danke dir.

Ich hatte vorhin zwar schon so ne Vermutung, aber musste dann los und konnte nicht weiter testen.
Jetzt klappts jedenfalls 😀

// Eine Sache ist mir jetzt noch aufgefallen.

Wie kann ich den Zeichensatz für den Output ändern ?
Alle Umlaute krieg ich jetzt unschön ausgegeben. :/
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Zurück
Oben