如何在Android中设置HTTP POST Resquest中的选项头和内容

如何在Android中设置HTTP POST Resquest中的选项头和内容,android,httprequest,httpurlconnection,Android,Httprequest,Httpurlconnection,我在Android中使用HttpPost和HttpURLConnection发送请求,请求的标题和内容如下: 标题: api_密钥:9A8AKX8BADKAXX, 速度:0, 声音:男, 韵律:1, 缓存控制:没有缓存 内容(内容类型:文本/普通): 大家好 以下是我的代码: *使用HttpPost: HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(requestU

我在Android中使用HttpPost和HttpURLConnection发送请求,请求的标题和内容如下:

标题: api_密钥:9A8AKX8BADKAXX, 速度:0, 声音:男, 韵律:1, 缓存控制:没有缓存

内容(内容类型:文本/普通): 大家好

以下是我的代码: *使用HttpPost:

        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(requestURL);
        post.addHeader("api_key", "9a8akx8badkaxxxx");
        post.addHeader("speed", "0");
        post.addHeader("voice", "male");
        post.addHeader("prosody", "1");
        post.addHeader("Cache-Control", "no-cache");
        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
        nvps.add(new BasicNameValuePair("data[body]", "Hello everyone"));
        AbstractHttpEntity ent= null;

        ent = new UrlEncodedFormEntity(nvps, HTTP.UTF_8);

        ent.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
        ent.setContentEncoding("UTF-8");
        post.setEntity(ent);
        post.setURI(new URI("http://api.openfpt.vn/text2speech/v4"));
        HttpResponse response =client.execute(post);
然后我不知道如何将内容“Hello everyone”放入HttpURLConnection

结果总是错误的。但是当我在Firefox中使用附加的HttpRequester时,响应是正常的。
请帮助我在Android中创建和设置Http请求

尝试以下设置内容类型:

        HttpPost httppost = new HttpPost(builder.getUrl());
        httppost.setHeader(HTTP.CONTENT_TYPE,
                "text/plain;charset=UTF-8");
要设置任意标题,我认为应该这样做:

        httppost.setHeader("api_key", "9a8akx8badkaxxxx");
        httppost.setHeader("speed", "0");
        httppost.setHeader("voice", "male");
        httppost.setHeader("voice", "male");
        httppost.setHeader("prosody", "1");
        httppost.setHeader("Cache-Control", "no-cache");
要发送数据,请为post字段选择一个名称(此处为Fn和IdDevice):

编辑结束

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
最后,执行post请求:

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

你能发布你的代码,让我们看看你是如何设置你的标题和内容的吗?通常我使用:httppost.setHeader(“String”、“String”+whateverneed);设置标题。我只是发布了我的代码,但是你错过了“内容(内容类型:text/plain):大家好”。我不知道如何将内容添加到HttpPost您想将一些数据发布到服务器上,对吗?当您这样做时,您发送的数据总是在某个字段内,比如表单或其他形式。在服务器中使用php(作为一个示例),您将检查变量$u POST['somethin\u in\u here'],该变量包含POST内容。在我给您的示例中,我们发送了两个字段(Fn和IdDevice),就好像它们是通过表单发布的一样,因此您可以在服务器上访问$\u POST['Fn']和$\u POST['IdDevice']。希望有帮助。我将使用变量“Content”更新答案,值为“Hello everyone”。如果有帮助,请接受答案。它不起作用:(我声明HttpClient HttpClient=new DefaultHttpClient();-可以吗?可以!我只是将代码HttpPost添加到类extends AsyncTask中。非常感谢:)
         nameValuePairs.add(new BasicNameValuePair("Content","Hello everyone"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);