【问题标题】:Posting comments to a wordpress-blog in Android在 Android 中向 wordpress 博客发表评论
【发布时间】:2010-04-06 07:04:12
【问题描述】:

我正在开发一个模块,该模块允许用户在 Wordpress 上发布的博客上发布 cmets。我查看了显示在博客条目底部的 Post-Comment-Form 的 HTML 源代码(留下回复部分)。以此为参考,我使用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(重定向到临时位置)异常,我将其忽略。 (注意:通常,当您(在网页上)发表评论时,您会被带回包含所有 cmets 的博客页面。我在重定向中获得的 URL 是相同的)即使忽略此重定向,我也可以使用此代码在我的个人博客上发布 cmets,而不是在实际(生产)博客上。

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

【问题讨论】:

  • 当您尝试发表评论时,在生产日志上发布发生的事情对您很有用。你有错误吗?你是说它似乎正确地发表了评论,但评论只是没有出现?
  • 我在日志中获取/捕获一个 HttpResponseException: Found(HTTP 302 状态代码),这在 IMO 是正常的,但 cmets 没有出现在生产日志中。

标签: android wordpress httpwebrequest http-redirect


【解决方案1】:

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

【讨论】:

  • 该博客激活了 Akismet 插件,该插件将我所有的 cmets 过滤为垃圾邮件。我可以避免这种过滤吗?除了停用插件之外,博主还有什么可以帮助我的吗?
  • 如果有人偶然发现这一点,我正在使用“不存在”的电子邮件 ID 来测试我的代码。当我提供有效的电子邮件 ID 时,cmets 未被过滤。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多