将评论发布到Android中的wordpress-blog

时间:2010-04-06 07:04:12

标签: android wordpress httpwebrequest http-redirect

我正在开发一个模块,允许用户在Wordpress上发布的博客上发表评论。我查看了博客条目底部显示的Post-Comment-Form的HTML源代码(Leave a Reply部分)。使用它作为参考,我使用DefaultHTTPClientBasicNameValuePairs将其翻译为Java,我的代码如下:

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","abz@xyc.com"));
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();
}

我使用此代码在日志中获得HTTP 302 Found(重定向到临时位置)异常,我忽略了这些异常。 (注意:通常,当您发布评论时(在网页上),您将被带回到征集所有评论的博客页面。我在重定向中获得的URL是相同的)即使忽略了此重定向,我也可以使用此代码在我的个人博客上发表评论,但不在实际(生产)博客上发表评论。

问题:
1.这可能是一个评论后设置问题(可能是原始博客所有者可能设置的内容)吗? 2. HTTPClient应该如何处理302状态代码?最后,我只需要通知用户成功和失败,而不是实际将他带到评论页面。

2 个答案:

答案 0 :(得分:1)

你可以检查gravatar,akismet或其他一些与你有关的插件创建问题。 尝试使用Firefox中的Poster和LiveHTTP标头扩展来检查输出,以调试生产网站

答案 1 :(得分:1)

假设存在wp-comments-post.php,生产站点必须阻止通过检查HTTP_REFERER和/或HTTP_USER_AGENT直接访问wp-comments-post.php。检查生产站点的.htaccess。