1
我想將我的android應用程序連接到servlet。我有這個錯誤:從android連接到servlet
org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.1.3:8081 refused
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:241)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:172)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:130)
在AndroidManifest.xml我加入這兩個許可
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
我可以從我的瀏覽器訪問http://192.168.1.3:8081/Android/Login,它工作正常。但是,如果我從我的真正的Android設備做同樣的事情,我會得到「連鎖超時」。 我已經停用了我的防火牆,但仍然是同樣的問題。
我的代碼:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT > 9)
{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
setContentView(R.layout.login);
bLogin=(Button) findViewById(R.id.loginB);
bLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
StringBuilder reponseHttp=new StringBuilder();
HttpClient client=new DefaultHttpClient();
String from="aaa",to="bbb";
try {
HttpGet httpGet =new HttpGet("http://192.168.1.3:8081/Android/Login?from="+from+"&to="+to);
HttpResponse response=client.execute(httpGet);
//rest of code
}catch (Exception e){
e.printStackTrace();}
}
});
}
你有沒有試圖避免連接主線程,像asynctask? –
不,我從主線連接,應該使用必要的asynctask嗎? – ghassen92
這是推薦的方法,請從你的Logcat –