如何从Android执行RESTful POST请求

时间:2013-04-08 03:05:38

标签: android

我第一次尝试执行REST Post,我不知道从哪里开始。

我正在与WordPress REST API进行互动,并尝试使用this端点:/sites/$site/posts/$post_ID/replies/new,用于向某个帖子提交新评论。

我认为我已经很好地掌握了处理GET请求,因为我已经成功处理了其中的几个。有了这些,我可以说我需要向服务器说一下URL,但似乎必须有另一个POST请求步骤。我的问题是:那个步骤是什么?

我是否将要提交的内容包装到JSONObject中并发布?如果是这样,我该如何发布?我是否需要以某种方式构造一个语句,类似于我如何构造一个在数据库上执行的语句?或者是否可以通过URL传递我的内容作为请求参数?

我知道这个问题对SO来说是开放式的,但我一直无法找到一个能够回答这些问题的好教程。如果你知道一个,请建议。

(我在Android应用中都这样做)

2 个答案:

答案 0 :(得分:7)

我的答案直接来自另一个答案,在这里看到Sending POST data in Android,但我已经切断并通过答案在这里为了方便,希望这有帮助

来自Apache Commons的Http客户端是可行的方法。它已经包含在android中。这是一个如何使用它进行HTTP Post的简单示例。

public void postData() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        nameValuePairs.add(new BasicNameValuePair("stringdata", "Hi"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

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

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

答案 1 :(得分:0)

您需要在服务器上实现一个脚本,POST会与该脚本进行交互,并使该脚本与您的数据库一起使用。

典型的情况是:

Java HTTP POST ~~~&gt; PHP ~~~~&gt; MySQL的。

学习PHP的一个很好的起点是在youtube上查看PHPAcademy教程。

http://www.youtube.com/course?list=EC442FA2C127377F07

PHP还可以帮助您在JSON中对结果进行编码并将其发布回客户端。