2010-09-06 126 views
0

我在Android中发现HTTP POST问题。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()); 
    } 

回答

0

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

问题不在于它的代码,是Android LogCat(记录器)在哪里打印生成的字符串。在这个记录器中,如果字符串太长,它只会显示一小段结果。

所以问题是,机器人的记录显示了多头的字符串

由于燃气公司的帮助的方式!

+0

请将此标记为已回答,然后使用此帖作为答案。帮助保持StackOverflow整洁! – 2010-11-08 01:44:42

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