2011-07-02 96 views
3

嗨,我使用下面的代碼將數據發送到服務器的Android Httppost

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(); 
    } 

我可以成功地將數據發送到服務器,但在文本format.I數據(在100Kb-200KB)的服務器返回大量希望將該文本響應轉換爲json對象。因此,我將所有響應分配到一個字符串中以轉換json對象。

但是,該響應字符串只包含較少量的數據。

我檢查了服務器,它發送112kb文件,但該響應字符串只包含較少data.say(50kb-75kb)。

所以ü可以請任何一個指導我解決問題

+0

嘗試讀取字符串的內容並比較該內容。不要比較字符串的大小 – Dharmendra

回答

1

的ArrayList是一個可擴展的列表項。所以我不知道用「5」作爲參數的目的是什麼。第二件事是BasicNameValuePair包含名稱和值作爲參數。將單個單詞用於名稱屬性是一種很好的做法。刪除

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文件。