2012-01-16 55 views
0

我正在使用以下代碼從局域網上的Web服務器獲取頁面的源代碼,該代碼是純文本(無html標記)。但是我總是得到空字符串作爲回報,如果我在瀏覽器中打開相同的URI,我可以看到文本。以下是我的代碼:Android - 局域網上的HTTP獲取請求

   String url = "http://192.168.1.40/touchscreens/get.qsp?display=1"; 

       HttpClient client = new DefaultHttpClient(); 

       HttpGet request = new HttpGet(); 
       request.setHeader("Content-Type", "text/plain; charset=utf-8"); 

       request.setURI(new URI(url)); 
       HttpResponse response = client.execute(request); 

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

       StringBuffer sb = new StringBuffer(""); 
       String line = ""; 
       String NL = System.getProperty("line.separator"); 

       while ((line = in.readLine()) != null) { 
        sb.append(line + NL); 
       } 

       String page = sb.toString(); 

       Toast.makeText(getApplicationContext(), page, Toast.LENGTH_LONG).show(); 

還有一件事,當我進入Android模擬器瀏覽器我看不出有什麼相同的URL。我錯過了什麼嗎?

+0

使用IP呼叫時不應該有一些端口? – kosa 2012-01-16 20:46:49

+0

StringBuilder類通常應優先於StringBuffer使用,因爲它支持所有相同的操作,但速度更快,因爲它不執行同步。 – jacknad 2012-01-16 20:49:13

+0

@thinksteep:它在80端口上工作,正如我所說的,當我在Google Chrome瀏覽器中粘貼相同的URL時,我可以成功查看文本。 – Ali 2012-01-16 20:50:13

回答

0

我建議您使用fiddler來調試您的HTTP請求(請參閱http://www.fiddler2.com/fiddler2/)。這應該調試您的瀏覽器和您的應用程序的互聯網請求,並顯示您的請求是否缺少必要的標題。

+0

這是fiddler2我的要求的原始觀點: GET http://192.168.1.40/touchscreens/get.qsp?display=1&b=1326747904130 HTTP/1.1 主持人:192.168.1.40 連接:保持活躍 的cache Control:max-age = 0 User-Agent:Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/535.7(KHTML,如Gecko)Chrome/16.0.912.75 Safari/535.7 Accept:text/html,application/xhtml + xml,application/xml; q = 0.9,*/*; q = 0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:zh-CN,en-US; q = 0.8,en; q = 0.6 Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.3 – Ali 2012-01-16 21:13:46

+0

您應該問的問題是:提琴手對您的Android應用程序和您的瀏覽器所說的有什麼看法。你說瀏覽器有效,小提琴手應該告訴你什麼是不同的。 – 2012-01-16 22:05:26