RESTful API の呼び出しを含む Android アプリを開発しています。Python で記述された REST サービスをラップトップ ( 192.168.156.1
) のポート 8080 で実行しています。Connectify Wifi 接続を使用して、電話をラップトップにテザリングしています。電話は192.168.156.112
です。これで、電話のブラウザから などの URL を使用してサービスにアクセスできますhttp://192.168.156.1:8080/lighting/12345
。ただし、アプリからアクセスしようとすると、LogCat で「接続が拒否されました」というエラーが表示されます。以下は、接続を確立するために使用しているコードです。
String sampleURL = "`http://192.168.156.1:8080/lighting/weert`";
HttpClient Client = new DefaultHttpClient();
try
{
HttpGet httpget = new HttpGet(sampleURL);
String serverString = "";
HttpResponse response= Client.execute(httpget);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
serverString = out.toString();
}
threadMsg(SetServerString);
}
catch(Exception ex){
Log.e("RESTCALL",ex.getMessage());
threadMsg("Fail!");
}
threadMsg() は、応答文字列を UI スレッドに返すメソッドです。
この問題を解決するための助けは素晴らしいでしょう! 前もって感謝します!
更新: スタック トレースの追加
I/ActivityManager( 246): START {act=android.intent.action.MAIN cat= [android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.testreceiver/.MainActivity u=0} from pid 464
I/ActivityManager( 246): Displayed com.example.testreceiver/.MainActivity: +315ms
W/System.err(15799): org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.156.1:8080 refused
D/AudioHardware( 89): AudioHardware pcm playback is going to standby.
D/AudioHardware( 89): closePcmOut_l() mPcmOpenCnt: 1
W/System.err(15799): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
W/System.err(15799): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
W/System.err(15799): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
W/System.err(15799): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
W/System.err(15799): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
W/System.err(15799): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
W/System.err(15799): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
W/System.err(15799): at com.example.testreceiver.MainActivity$1.run(MainActivity.java:47)
W/System.err(15799): at java.lang.Thread.run(Thread.java:856)
W/System.err(15799): Caused by: java.net.ConnectException: failed to connect to /192.168.156.1 (port 8080): connect failed: EHOSTUNREACH (No route to host)
W/System.err(15799): at libcore.io.IoBridge.connect(IoBridge.java:114)
W/System.err(15799): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
W/System.err(15799): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
W/System.err(15799): at java.net.Socket.connect(Socket.java:842)
W/System.err(15799): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
W/System.err(15799): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
W/System.err(15799): ... 8 more
W/System.err(15799): Caused by: libcore.io.ErrnoException: connect failed: EHOSTUNREACH (No route to host)
W/System.err(15799): at libcore.io.Posix.connect(Native Method)
W/System.err(15799): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
W/System.err(15799): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
W/System.err(15799): at libcore.io.IoBridge.connect(IoBridge.java:112)
W/System.err(15799): ... 13 more
E/RESTCALL(15799): Connection to `http://192.168.156.1:8080` refused
また、サーバー上で実行されているコードは次のとおりです。
import socket
from bottle import route, run@route('/lighting/<name>', method='GET')
def hello(name="ABC"):
return name
run(host='192.168.156.1', port=8080, debug=True)