我有一個簡單的servlet運行在tomcat上。它實現了一個簡單的doGet(),當我把它從網絡瀏覽器一樣工作:Android/Apache HTTPGET將無法正常工作,但在瀏覽器中它的確如此
http://192.168.1.140:8080/Application/doTask?id=0¶m=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,但線程永遠不會得到響應。如果我進入手機上的網絡瀏覽器,我會得到結果。但從應用程序我什麼都沒有 - 線程掛起。
任何想法非常讚賞,想不通我做錯了什麼
做兩件事,並檢查...首先刪除端口號8080 ...如果它沒有工作...然後使用http:/ /10.0.2.2而不是http://192.168.1.140:8080 –