Android Httppost

时间:2011-07-02 06:45:52

标签: java android http-post

您好我正在使用以下代码将数据发送到服务器

 HttpClient httpclient = new DefaultHttpClient();   
 HttpPost httppost = new HttpPost("http://www.myurl.com/app/page.php"); 
// Add your data   
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);   
nameValuePairs.add(new BasicNameValuePair("name", "dave"));
nameValuePairs.add(new BasicNameValuePair("taxi no", "354"));
nameValuePairs.add(new BasicNameValuePair("pack", "0"));
nameValuePairs.add(new BasicNameValuePair("exchk", "1"));

try {
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        try {
            HttpResponse response = httpclient.execute(httppost);
            String responseBody = EntityUtils.toString(response.getEntity());

        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

我可以成功地将数据发送到服务器,但服务器以文本格式返回更大量的数据(100Kb-200KB)。我想将该文本响应转换为json object.so我将所有响应分配到一个字符串中转换json对象。

但是,该响应字符串只包含较少的数据。

我检查了它发送112kb文件的服务器,但该响应字符串只包含较少的data.say(50kb-75kb)。

所以请任何人指导我解决问题

1 个答案:

答案 0 :(得分:1)

ArrayList是一个可扩展的List项。所以我不知道使用&#34; 5&#34;的目的是什么?作为一个论点。第二件事是BasicNameValuePair包含名称和值作为参数。将单个单词用于name属性是一种很好的做法。删除

String responseBody = EntityUtils.toString(response.getEntity());

添加以下代码示例

try {
HttpResponse httpResponse = httpClient.execute(httpPost);

InputStream inputStream = httpResponse.getEntity().getContent();

InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

StringBuilder stringBuilder = new StringBuilder();

String bufferedStrChunk = null;

while((bufferedStrChunk = bufferedReader.readLine()) != null){
    stringBuilder.append(bufferedStrChunk);
    }

return stringBuilder.toString();

} catch (ClientProtocolException cpe) {
    System.out.println("First Exception caz of HttpResponese :" + cpe);
    cpe.printStackTrace();
} catch (IOException ioe) {
    System.out.println("Second Exception caz of HttpResponse :" + ioe);
    ioe.printStackTrace();
}

以可读格式返回页面内容。然后,您可以使用JSONObject和JSONArray将其传递给JSON文件。