Android中的HTTP Post问题

时间:2010-09-06 18:28:15

标签: html android http post httpclient

我在Android中制作HTTP POST时遇到问题。

当代码读取响应时会出现问题,它无法获取我想要检索的完整网页代码。

我只检索一段网页。

以下是代码:

    try {

        HttpClient httpclient = new DefaultHttpClient(); 

        HttpPost httppost = new HttpPost(URL);
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
        nameValuePairs.add(new BasicNameValuePair("text", "06092010"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

        HttpResponse response; 
        response=httpclient.execute(httppost);

        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));


        String  s = "";
        String line = reader.readLine();

        while(line != null){
            s += line+"\n";
            line = reader.readLine();
        }


        Log.d("Street", "Result: "+s);          


    } catch (ClientProtocolException e) { 
        // TODO Auto-generated catch block          
        Log.d("Street", e.toString());   
    } catch (IOException e) { 
        // TODO Auto-generated catch block          
        Log.d("Street", e.toString());
    } catch (Exception e) {
        Log.d("Street", e.toString());
    }

2 个答案:

答案 0 :(得分:0)

所以reader.readLine在到达流的末尾之前返回null?缓冲区末尾是否包含换行符? The docs表示流的结尾不构成“行尾”:

  

阅读一行文字。一条线被认为是任何一条线终止的   换行符('\ n'),回车符('\ r')或回车符   然后立即换行。

我自己使用这种方法,它有效,但不是一个非常有效的解决方案:

public static String URLToString(URL url) throws IOException {
    InputStream in = (InputStream) url.getContent();
    int ch;

    StringBuffer b = new StringBuffer();
    while( ( ch = in.read() ) != -1 ){
        b.append( (char)ch );
    }

    return b.toString();
}

答案 1 :(得分:0)

使用你的代码我得到了相同的结果,但现在我知道了这个问题。

问题不在于代码,是Android LogCat(记录器),我打印结果字符串。在此记录器中,如果字符串太长,则只显示结果的一小部分。

所以问题是android的记录器显示longs字符串的方式

感谢Gaz的帮助!