# HttpClient - Senden via Post



## Tomate_Salat (7. Apr 2009)

Hi @ all,

ich bin derzeit dabei ein Tool zu entwickeln, mit dem ich NewsEinträge an eine Seite senden kann und diese dort gespeicher werden. Dabei dient ein PHP-Script als Server. Jetzt habe ich das die ganze Zeit über die GET-Methode geregelt, diese macht aber alles umständlich!

Jetzt habe ich mir, weil ich es in einem Post hier gelesen habe, den HTTP-Client von Appache geladen, weil es damit glaub am einfachsten gehen soll. 

Wie könnte ich jetzt beispielsweise einen Post mit dem index "titel" und dem inhalt "testeintrag" an die adresse:
http://meinserver.de/news.php?id=123885892&do=erstellen&user=admin
senden?

MFG und Danke schonmal

Tomate_Salat


----------



## faetzminator (7. Apr 2009)

Hypertext Transfer Protocol ? Wikipedia
Bei Fragen zu Protokollen bildet WP meistens eine gute Grunlage


----------



## Tomate_Salat (7. Apr 2009)

Ähm, ich weis wozu die POST-Methode gut ist. Mir geht darum: wie kann ich es mit Java etwas via POST-Methode versenden?


----------



## faetzminator (7. Apr 2009)

es geht nicht darum ob sie gut ist, sondern wie es inhaltlich aussieht... (mir fällt gerade keine gute HTTP lib ein, und ein HTTP Header ist mit wenig Code von Hand geschrieben)
und ansonsten: new Socket("http://domain.com", 80);

EDIT: ah, hab wohl eine Zeile überlesen, aber was hat mir Google als erstes Ergebnis geliefert? HttpClient - Post Method


----------



## Tomate_Salat (7. Apr 2009)

Da war ich schon, damit hab ich ja meine Probleme


Tomate_Salat hat gesagt.:


> (...)den HTTP-Client von Appache geladen, weil es damit glaub am einfachsten gehen soll.(...)



[Vllt. hätte ich noch schreiben sollen, dass ichs mit dem auch versucht habe, aber es nicht hinbekam]


----------



## faetzminator (7. Apr 2009)

ich glaube irgendwie nicht, dass du meinen Link angeschaut hast. Aber nun denn, da hat es ein Beispiel:

```
PostMethod post = new PostMethod("http://jakarata.apache.org/");
        NameValuePair[] data = {
          new NameValuePair("user", "joe"),
          new NameValuePair("password", "bloggs")
        };
        post.setRequestBody(data);
        // execute method and handle any error responses.
        ...
        InputStream in = post.getResponseBodyAsStream();
        // handle response.
```
auf deine erste Aussage bezogen würde das Beispiel dann so aussehen (wobei ich nicht testete ob man GET einfach in der URL übergeben kann):

```
PostMethod post = new PostMethod("http://meinserver.de/news.php?id=123...len&user=admin");
        NameValuePair[] data = {
          new NameValuePair("titel", "testeintrag")
        };
        post.setRequestBody(data);
        // execute method and handle any error responses.
        ...
        InputStream in = post.getResponseBodyAsStream();
        // handle response.
```


----------



## Tomate_Salat (7. Apr 2009)

Doch, damit habe ich ja meine probleme:

```
PostMethod post = new PostMethod( "http://localhost/news.php?id=8cf4047c3a5f5b6ceb6123190605ba11&do=erstellen&user=admin" );

        NameValuePair[] data = {
                new NameValuePair("titel",titel),
                new NameValuePair("content",content)
        };
        
        post.setRequestBody(data);
```

und das Ergebnis:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
	at org.apache.commons.httpclient.HttpMethodBase.<clinit>(HttpMethodBase.java:104)
	at PHPConnector.eintragErstellen(PHPConnector.java:69)
	at MenuController$8.actionPerformed(MenuController.java:319)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	... 28 more

und beziehen wir uns nur auf zeile: 69 in PHPConnector.java, dann hat er Probleme mit der URL und die ist zu 100% richtig


----------



## maki (7. Apr 2009)

```
NoClassDefFoundError: org/apache/commons/logging/LogFactory
```
Solltest die benötigten jars miteinbinden.

Welche das sind findest du hier heraus: HttpClient - Dependencies


----------



## Tomate_Salat (7. Apr 2009)

peinlich =(, aber jetzt funsts, danke 

EDIT: ok vllt doch nicht so ganz: Ruft der über die PostMethode dir URL auf oder sendet er sie nur? Und die post.getResponseBodyAsStream()-Funktion, liefert doch normalerweise ein Ergebnis. Muss das Ergebnis dann als Post-Methode an den Clienten gesendet werden?


----------



## faetzminator (8. Apr 2009)

Das nächste Mal solltest du uns evtl. sagen, dass eine Exception geworfen wird, und diese evtl. auch gerade posten


----------



## Tomate_Salat (8. Apr 2009)

Achso.....ja klar, hätte ich früher schreiben sollen, sry


----------



## HoaX (8. Apr 2009)

Tomate_Salat hat gesagt.:


> EDIT: ok vllt doch nicht so ganz: Ruft der über die PostMethode dir URL auf oder sendet er sie nur? Und die post.getResponseBodyAsStream()-Funktion, liefert doch normalerweise ein Ergebnis. Muss das Ergebnis dann als Post-Methode an den Clienten gesendet werden?



Die Sätze ergeben alle keinen Sinn.


----------



## Tomate_Salat (9. Apr 2009)

@HoaX:
ok, hat sich auch mitlerweile erledigt. Habe mir einen vServer gemietet, jetzt kann ich den Server einfach in Java Schreiben


----------

