如何将字符串传递给HttpPost以将其作为Android中的表单包含在内

时间:2013-07-16 21:08:59

标签: android http-post

我有这个字符串(postInfo):

"Content-Type=application/x-www-form-urlencoded&grant_type=refresh_token
&refresh_token=1/bNKLGjsbgYwkNytEwpNhgfTyuDs34Klkjtqp2AZKnqs&
client_secret=mySecret&client_id=my_id.apps.googleusercontent.com"

我需要能够将其发送到HttpPost才能完成其工作等等。我一直在Android中测试它,但除非它是一个键值对,否则它将无效。如果字符串总是相同的话我会解析它,但我无法保证。在测试时我意识到它为什么没有工作。它不作为表单包含在请求正文中。有趣的是,在iOs中它确实没有太多工作。这是我的java:

public String post(String leUri, String data) {
        /*=https://accounts.google.com/o/oauth2/token*/
        HttpPost httpPost = new HttpPost(leUri);
            try {               
            httpPost.setEntity(new StringEntity(postInfo));
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            return "An Error Ocurred";
        }
             try {
            HttpResponse response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();
        /*...*/

它不会显示为表单。我怎么能这样做?我肯定错过了什么。感谢。

1 个答案:

答案 0 :(得分:0)

您必须按照以下方式拆分邮件信息,并检查编码网站是否正在发布帖子。通常是UTF-8

//设置内容类型

httpPost.setHeader( “内容类型”,                     “应用程序/ X WWW的窗体-urlencoded;字符集= UTF-8”);

//添加您的数据

httpPost.setEntity(new UrlEncodedFormEntity(“grant_type = refresh_token” &安培; refresh_token = 1 / bNKLGjsbgYwkNytEwpNhgfTyuDs34Klkjtqp2AZKnqs&安培; client_secret = mySecret& client_id = my_id.apps.googleusercontent.com“,”UTF-8“));