簡體   English   中英

Android上的BufferedReader切斷了我的HTTP Post?

[英]BufferedReader on Android cutting off my HTTP Post?

使用基本的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或什至在瀏覽器中運行它的響應相比,在android中我的響應縮短了。

android中最大響應的大小約為4070字節,而實際為14,000+。

我嘗試將緩沖區大小設置為14200,但響應仍然保持不變。

在下面編輯新代碼(切換到https並嘗試建議的解決方案),仍然收到〜4070 bye響應

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

原來,我從來沒有做過轉換! 一個簡單的

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

做到了這一點,但問題是Log僅會輸出4096bytes,而我的json解析器正在獲取錯誤數組的長度!

感謝大家的支持,並記得仔細檢查您的代碼!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM