2011-09-08 60 views
1

使用基本的HTTP POST例如,Android上的BufferedReader切断我的HTTP Post?

try { 
    // Construct data 
    String data = URLEncoder.encode("param", "UTF-8") + "=" + URLEncoder.encode(param, "UTF-8"); 
    data += "&" + URLEncoder.encode("param", "UTF-8") + "=" + URLEncoder.encode(param, "UTF-8"); 
    data += "&" + URLEncoder.encode("param", "UTF-8") + "=" + URLEncoder.encode(param, "UTF-8"); 
    data += "&" + URLEncoder.encode("param", "UTF-8") + "=" + URLEncoder.encode(param, "UTF-8"); 

    // Send data 
    URL url = new URL("URL THAT IM SEARCHING"); 
    URLConnection conn = url.openConnection(); 
    conn.setDoOutput(true); 
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 

    // Get the response 
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    json = rd.readLine(); 
    Log.d("TAG",json); 
    wr.close(); 
    rd.close(); 
} catch (Exception e) { } 

我的回答是Android缩短VS,我会得到它运行的Android之外,甚至在我的浏览器极大的响应。

android中最大响应的大小是〜4070字节,相对于其实际的14,000+字节。

我试着将缓冲区大小设置为14200,响应仍然保持不变。下面

编辑新的代码(切换为HTTPS &尝试建议的解决方案),仍然得到〜4070再见响应

String getUrl = ("https:.asdadasd/"+trimmed+"?latitude="+lat+"&longitude="+lng+"&distance="+rad); 
     Log.d("TAG","URL USED FOR SEARCHING: "+getUrl); 
     HttpClient client = new MyHttpClient(getApplicationContext()); 
     HttpGet get = new HttpGet(getUrl); 
     HttpResponse responseGet = null; 
     try { 
     responseGet = client.execute(get); 
     HttpEntity resEntityGet = responseGet.getEntity();  
     InputStream instream = resEntityGet.getContent(); 

     String result= convertBrToString(instream); 
     json = result; 
     instream.close(); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     Log.d("TAG", json); 

     } 
    public String convertBrToString(InputStream in) 
    { 

      BufferedReader br; 
      StringBuffer outString = new StringBuffer(); 
      br = new BufferedReader(new InputStreamReader(in)); 
      try { 
       String read; 
       read = br.readLine(); 
      while(read != null) 
      { 
       outString.append(read); 
       read =br.readLine(); 
      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
      return outString.toString();  
    } 
+0

其他任何人都有一个建议!? – user824015

回答

0

原来,我从来没有做转换!一个简单的

ResponseHandler<String> responseHandler=new BasicResponseHandler(); 
      String responseBody = client.execute(get, responseHandler); 

的伎俩,但问题是,日志将只打印4096bytes,而我的JSON解析器得到错误的数组的长度!

感谢大家的支持,&记得仔细检查你的代码!

+0

非常有帮助谢谢! – user824015