私は自分のコンピューターでローカルに実行されている春REST apiを持っています。このAPIをAndroid開発のために使いたいです。
ここに私のリクエストがあります:
public static String sendGet(final String url) {
StringBuilder result = new StringBuilder();
HttpURLConnection urlConnection = null;
try {
String apiUrl = getAbsoluteUrl(url); // concatenate uri with base url eg: localhost:8080/ + uri
URL requestUrl = new URL(apiUrl);
urlConnection = (HttpURLConnection) requestUrl.openConnection();
urlConnection.connect(); // no connection is made
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
return result.toString();
}
デバイスのブラウザからAPIにアクセスできます。ただし、ビルドされたapk内でこの同じURLを使用して要求を行うと、接続は行われません。
私のマニフェストには以下が含まれます:
<uses-permission Android:name="Android.permission.INTERNET"/>
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
サイドノート:
USB経由で残りのAPIを実行しているラップトップにデバイスを接続しています。 ipconfigを呼び出して見つかったWLAN IPv4アドレスを使用しています。
正しい方向へのヒントは大歓迎です-ありがとう!
編集して、chrome browser(on Android device)output from local REST api laptop on my laptop(A GET requestデフォルトのゲストユーザー情報を返すには):
誰かが興味があるなら解決しました:
元のsendGet(final String url)
が含まれていたクラスを次のように拡張することで、この問題を解決できましたHttpClientUsage extends AsyncTask<String, Void, String>
詳細情報とチュートリアルはここにあります: AsyncTask tutorial
次に、ローカルのREST APIで次のようにCORS設定を構成する必要がありました。
cors:
allowed-origins: "*"
allowed-methods: GET, PUT, POST, DELETE, OPTIONS
allowed-headers: "*"
exposed-headers:
allow-credentials: true
max-age: 1800
あなたの助けをありがとう、それは大歓迎です。
これを行う簡単な方法を教えてください。 Androidエミュレータを使用している場合、IPアドレスとして10.0.2.2を使用して、REST APIが利用可能なホストマシンに接続できます。
同様に、Oracle Virtualboxを使用するGenymotionを使用している場合は、10.0.3.2を使用できます。
残りのURLは次のようにする必要があります-http://localhost:8080/yourRest/restMethod
。
localhost urlの代わりに、同じネットワーク(wifiネットワーク)上のモバイルマシンとローカルマシンを接続します。ローカルマシンのIPアドレスを取得しますe.g 192.168.1.X ...これで、残りのエンドポイントURLはhttp://192.168.1.X:8080/yourRest/restMethod