2010-11-25 14 views
1

Je suis en train d'écrire quelque chose à un fichier vide sur mon serveur apacheHttpPost ne fonctionne pas!

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); 

Les retours de reponse « HTTP/1.1 200 OK » il ne trouve le fichier

J'ai essayé de supprimer le fichier et a renvoyé l'erreur 404

J'ai lu les documents de apache et ressemble fais droit « je pense »

Mon problème est ... le contenu du fichier ne sont pas mis à jour!

Un exemple serait génial!

+0

Dans quel langage et quel framework de programmation avez-vous écrit votre application Web? Avez-vous testé l'application Web en utilisant d'autres clients, comme 'curl'? En d'autres termes, pourquoi s'agit-il d'une question Android plutôt que d'une question de serveur Web ou d'application Web? – CommonsWare

+0

Je suis d'accord avec CommonsWare, le problème ici est le plus probable dans ce que vous faites côté serveur lorsque la demande de poste est reçu. – blindstuff

+0

le serveur est apache2 sur Ubuntu 10.10, je peux y accéder depuis mon navigateur. Je peux également lire et analyser des fichiers XML à partir du serveur mais je ne sais pas comment écrire dans un fichier XML sur le serveur. "myfile" dans ma question est le fichier XML réel, est-ce la façon dont il est censé être ou devrais-je avoir comme un script php ou quelque chose pour gérer les messages http? je suis comme noob qu'ils obtiennent avec android mais je m'excuse pour tout inconvénient – ZiGi

Répondre

4

Essayez ceci:

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

merci pour la réponse rapide, toujours rien n'apparaît sur mon fichier xml et la réponse est toujours HTTP/1.1 200 OK, "myfile" est le fichier xml réel, suis-je censé poster différemment comme php? – ZiGi

+0

l'homme bro, mais je reçois toujours HTTP/1.1 200 OK de la réponse et le fichier est encore vide. J'ai créé post.php et copié à la fois les codes php et Android, mais toujours pas d'utilisation :( – ZiGi

+0

je vais essayer le nouveau script php vous mettez – ZiGi

0

Vous pouvez appeler setcontentType. Par exemple

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);