2010-11-25 9 views
1

Ich versuche, etwas auf eine leere Datei auf meinem Apache-ServerHttpPost funktioniert nicht!

myClient= new DefaultHttpClient(); 

StringEntity myString = new StringEntity("important message"); 
HttpPost httpPost = new HttpPost("http://10.0.218.211/myfile"); 
httpPost.setEntity(myString); 

HttpResponse response = myClient.execute(httpPost); 

Den reponse returns „HTTP/1.1 200 OK“ zu schreiben, so dass es die Datei

ich die Datei versuchte, findet zu entfernen und zurück Fehler 404

ich las apache-Dokumentation und sieht aus wie es tue richtig „ich denke,“

Mein Problem ist ... der Inhalt der Datei aktualisiert nicht bekommen!

Ein Beispiel wäre großartig!

+0

Mit welcher Programmiersprache und welchem ​​Framework haben Sie Ihre Web-App geschrieben? Haben Sie die Web App mit anderen Clients wie 'curl' getestet? Mit anderen Worten, warum ist dies eine Android-Frage und keine Frage zu einem Webserver oder einer Web-App? – CommonsWare

+0

Ich muss mit CommonsWare zustimmen, das Problem hier ist höchstwahrscheinlich in dem, was Sie tun Server-Seite, wenn die Post-Anfrage erhalten wird. – blindstuff

+0

Der Server ist Apache2 auf Ubuntu 10.10, ich kann es von meinem Browser aus zugreifen. Ich kann auch XML-Dateien vom Server lesen und parsen, aber ich weiß nicht, wie man in eine XML-Datei auf dem Server schreibt. "myfile" in meiner Frage ist die eigentliche XML-Datei, ist das so, wie es sein soll oder sollte ich wie ein PHP-Skript oder etwas, um die HTTP-Posts zu behandeln? Ich bin wie noob, wie sie mit Android bekommen, aber ich entschuldige mich für etwaige Unannehmlichkeiten – ZiGi

Antwort

4

Versuchen Sie folgendes:

url = "http://10.0.218.211/post.php"; 

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost post = new HttpPost(url); 

try { 
     **// Add your data <-** 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("message", "important message 1")); 
     nameValuePairs.add(new BasicNameValuePair("message2", "important message 2")); 
     post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(post); 

     } catch (ClientProtocolException e) { 
     /TODO Auto-generated catch block 
     } catch (IOException e) { 
     // TODO Auto-generated catch block 
     } 
    } 

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

post.php

<?php 

$message = $_POST['message']; 

// Load XML file 
$xml = simplexml_load_file("myfile.xml"); 

//In this line it create a SimpleXMLElement object with the source of the XML file. 
$sxe = new SimpleXMLElement($xml->asXML()); 

//The following lines will add a new child and others child inside the previous child created. 
$item = $sxe->addChild("item"); 
$item->addChild("message", $message); 

//This next line will overwrite the original XML file with new data added 
$sxe->asXML("myfile.xml"); 

?> 

myfile.xml

<?xml version="1.0" encoding="utf-8" ?> 
<data> 
    <item> 
     <message>Important Message</messagee> 
    </item> 
</data> 
+0

danke für die schnelle Antwort, noch nichts auf meiner XML-Datei erscheint und die Antwort ist immer noch HTTP/1.1 200 OK, "myfile" ist die eigentliche XML-Datei, soll ich anders als php posten? – ZiGi

+0

ur der Mann bro, aber ich bekomme immer noch HTTP/1.1 200 OK von Antwort und die Datei ist immer noch leer. Ich erstellte post.php und kopierte beide php und Android-Codes, aber immer noch keine Verwendung :( – ZiGi

+0

Ich werde versuchen, das neue PHP-Skript setzen Sie – ZiGi

0

möchten Sie möglicherweise setcontentType aufrufen. Zum Beispiel

StringEntity myString = new StringEntity("important message"); 
myString.setContentType("application/json");//or what ever your server expected 
HttpPost httpPost = new HttpPost("http://10.0.218.211/myfile"); 
httpPost.setEntity(myString); 
Verwandte Themen