2010-04-06 8 views
3

Je travaille sur un module qui permet aux utilisateurs de poster des commentaires sur un blog publié sur Wordpress. J'ai regardé la source HTML pour Post-Comment-Form affiché au bas d'une entrée de blog (section Leave a Reply). En utilisant cela comme une référence, je l'ai traduit à Java en utilisant DefaultHTTPClient et BasicNameValuePairs et mon code ressemble à:Poster des commentaires sur un blog wordpress dans Android

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://xycabz.wordpress.com/wp-comments-post.php"); 
httppost.setHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8"); 

List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 

nvps.add(new BasicNameValuePair("author","abc")); 
nvps.add(new BasicNameValuePair("email","[email protected]")); 
nvps.add(new BasicNameValuePair("url",""));   
nvps.add(new BasicNameValuePair("comment","entiendamonos?")); 
nvps.add(new BasicNameValuePair("comment_post_ID","123")); 
//this was a hidden field and always set to 0 
nvps.add(new BasicNameValuePair("comment_parent","0")); 

try { 
    httppost.setEntity(new UrlEncodedFormEntity(nvps)); 
} catch (UnsupportedEncodingException e1) { 
    e1.printStackTrace(); 
} 

BasicResponseHandler handler = new BasicResponseHandler(); 


try { 

    Log.e("OUTPUT",httpclient.execute(httppost,handler)); 
} catch (ClientProtocolException e) {    
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Je reçois HTTP 302 Found (Rediriger à l'emplacement temporaire) des exceptions dans les journaux avec ce code, que je ne pas tenir compte. (Remarque: Habituellement, lorsque vous postez un commentaire (sur la page Web), vous êtes redirigé vers la page du blog qui contient tous les commentaires.) L'URL que je reçois dans les redirections est la même) Même après avoir ignoré cette redirection poster des commentaires sur mon blog personnel en utilisant ce code mais pas sur le blog (production) actuel.

Questions:
1. Serait-ce un des paramètres post-un commentaire problème (peut-être quelque chose que le propriétaire du blog d'origine aurait pu mettre)?
2. Comment HTTPClient doit-il gérer le code d'état 302? Finalement, je dois juste informer l'utilisateur du succès et de l'échec et ne pas l'emmener à la page des commentaires.

+0

Il vous serait utile de publier ce qui se passe dans le journal de production lorsque vous essayez de publier le commentaire. Avez-vous une erreur? Voulez-vous dire qu'il semble afficher le commentaire correctement, mais le commentaire n'apparaît tout simplement pas? – synic

+0

Je reçois/attrape une exception HttpResponseException: Trouvé (code d'état HTTP 302) dans les journaux, lequel IMO est normal, mais les commentaires n'apparaissent pas dans les journaux de production. – Samuh

Répondre

1

Vous pouvez vérifier Gravatar, Akismet ou d'autres plugins liés aux commentaires créant des problèmes pour vous. Essayez de vérifier la sortie en utilisant les extensions d'en-têtes Poster et LiveHTTP dans Firefox pour déboguer le site de production

+0

Ce blog avait activé le plug-in Akismet qui filtrait tous mes commentaires comme spam. Puis-je éviter ce filtrage? Y at-il quelque chose que le propriétaire du blog peut faire pour m'aider autre que de simplement désactiver le plugin? – Samuh

+0

Dans le cas où quelqu'un trébucherait sur ce point, j'utilisais un e-mail "inexistant" pour tester mon code. Lorsque j'ai fourni un e-mail valide, les commentaires n'ont pas été filtrés. – Samuh

1

En supposant que wp-comments-post.php existe, le site de production doit bloquer l'accès direct à wp-comments-post.php soit vérifier HTTP_REFERER et/ou HTTP_USER_AGENT. Vérifiez le .htaccess pour le site de production.

Questions connexes