2015-05-01 9 views
2

我有一個簡單的servlet運行在tomcat上。它實現了一個簡單的doGet(),當我把它從網絡瀏覽器一樣工作:Android/Apache HTTPGET將無法正常工作,但在瀏覽器中它的確如此

http://192.168.1.140:8080/Application/doTask?id=0&param=something 

不過,我想從Android應用程序調用它,我什麼也沒得到,除了掛起。我在的AsyncTask運行它,所以它不是一個真正的竅門,但我有這個在「SendServerThread」

public SendServerThread(String state, int isHalfway) { 
    mState = state; 
    mIsHalfWay = mIsHalfWay; 

    mRestClient = new RestClient(); 
} 

@Override 
protected String doInBackground(String... params) { 
    HttpClient httpClient = new DefaultHttpClient(); 
    String response = ""; 
    try { 
     URI urlString = new URI(PI_ADDRESS + "/Application/API?id=0&setState=" + mState + "&percentage=" + mIsHalfWay); 
     HttpGet httpGetRequest = new HttpGet(); 
     httpGetRequest.setURI(urlString); 

     HttpResponse httpResponse = httpClient.execute(httpGetRequest); 

     String line = ""; 
     BufferedReader br = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent())); 
     while ((line = br.readLine()) != null) { 
      response+=line; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     httpClient.getConnectionManager().shutdown(); 
    } 

    return response; 
} 

我驗證它調用的URL是正確的,但我卻一無所獲。沒有反應。我有INTERNET許可。

我這樣稱呼它從UI:

  new SendServerThread(state, isHalfWay) 
      { 
       @Override public void onPostExecute(String result) 
       { 
        unlockUI(); 
       } 
      }.execute(""); 

而且它通過與HTTPGET,但線程永遠不會得到響應。如果我進入手機上的網絡瀏覽器,我會得到結果。但從應用程序我什麼都沒有 - 線程掛起。

任何想法非常讚賞,想不通我做錯了什麼

+0

做兩件事,並檢查...首先刪除端口號8080 ...如果它沒有工作...然後使用http:/ /10.0.2.2而不是http://192.168.1.140:8080 –

回答

0

我打開飛行模式,然後在無線網絡開關,因此所有移動數據被禁用,然後它的工作:(

+0

你也應該使用瀏覽器從設備上進行檢查。 – greenapps

0

如果你正在使用模擬器進行測試,本地主機的IP地址是10.0.2.2

相關問題