JSONオブジェクトを受け取り、その内容をArrayListに配置しようとしています。設定したPHPサーバーは、アプリケーションがサーバーに接続していることを示していますが、何も返されません。 致命的なエラーは発生しませんが、ソケットエラー:パーミッションが拒否されています。AndroidアプリケーションをJSON経由でPHPサーバーに接続する:ソケット例外
D/NetworkSecurityConfig: No Network Security Config specified, using platform default
I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
W/System.err: java.net.SocketException: Permission denied
W/System.err: at java.net.Socket.createImpl(Socket.java:454)
W/System.err: at java.net.Socket.getImpl(Socket.java:517)
W/System.err: at java.net.Socket.setSoTimeout(Socket.java:1108)
W/System.err: at com.android.okhttp.Connection.connectSocket(Connection.java:1454)
W/System.err: at com.android.okhttp.Connection.connect(Connection.java:1413)
W/System.err: at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:1707)
W/System.err: at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:133)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:466)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:371)
W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:503)
W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:438)
W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:247)
W/System.err: at java.net.URLConnection.getContent(URLConnection.java:737)
W/System.err: at com.example.steve.plantpals.receiveData.receivePlantList(receiveData.java:41)
W/System.err: at com.example.steve.plantpals.UserActivity$1.onClick(UserActivity.java:38)
W/System.err: at android.view.View.performClick(View.java:6205)
W/System.err: at android.widget.TextView.performClick(TextView.java:11103)
W/System.err: at android.view.View$PerformClick.run(View.java:23653)
W/System.err: at android.os.Handler.handleCallback(Handler.java:751)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err: at android.os.Looper.loop(Looper.java:154)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6682)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
W/System.err: java.net.SocketException: Permission denied
W/System.err: at java.net.Socket.createImpl(Socket.java:454)
W/System.err: at java.net.Socket.getImpl(Socket.java:517)
W/System.err: at java.net.Socket.setSoTimeout(Socket.java:1108)
W/System.err: at com.android.okhttp.Connection.connectSocket(Connection.java:1454)
W/System.err: at com.android.okhttp.Connection.connect(Connection.java:1413)
W/System.err: at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:1707)
W/System.err: at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:133)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:466)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:371)
W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:503)
W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:438)
W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:247)
W/System.err: at java.net.URLConnection.getContent(URLConnection.java:737)
W/System.err: at com.example.steve.plantpals.receiveData.receivePlantList(receiveData.java:41)
W/System.err: at com.example.steve.plantpals.UserActivity$1.onClick(UserActivity.java:38)
W/System.err: at android.view.View.performClick(View.java:6205)
W/System.err: at android.widget.TextView.performClick(TextView.java:11103)
W/System.err: at android.view.View$PerformClick.run(View.java:23653)
W/System.err: at android.os.Handler.handleCallback(Handler.java:751)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err: at android.os.Looper.loop(Looper.java:154)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6682)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
私がデータを受信するために呼び出すのはここです:
public class receiveData {
int moisture = LocalStorage.moisture;
User user;
ArrayList<Plant> receivedPlants = new ArrayList<Plant>();
URL url = new URL("http://192.168.0.14/steve.php");
URLConnection urlConnection = (HttpURLConnection) url.openConnection();
public receiveData() throws IOException {
}
public ArrayList<Plant> receivePlantList() {
// HTTP request
urlConnection.setDoOutput(true);
try {
urlConnection.getContent();
} catch (IOException e) {
e.printStackTrace();
}
// Get items from JSON object and place in a plant list
BufferedReader reader = null;
try {
InputStream stream = urlConnection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
JsonReader jReader = new JsonReader(reader);
jReader.beginObject();
while (jReader.hasNext()) {
jReader.nextName();
int plantMoisture = jReader.nextInt();
String plantName = jReader.nextString();
Plant currentPlant = new Plant(plantName, plantMoisture);
receivedPlants.add(currentPlant);
}
jReader.endObject();
reader.close();
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
//jReader.close();
return receivedPlants;
}
、ここでは私のAndroidのマニフェストです:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.steve.plantpals">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MyPlants"
android:label="@string/title_activity_my_plants"
android:theme="@style/AppTheme.NoActionBar" />
<activity android:name=".AddPlant" />
<activity android:name=".testMoistureHigh" />
<activity android:name=".testMoistureLow" />
<activity android:name=".testMoistureOptimal" />
<activity
android:name=".SettingsActivity"
android:label="@string/title_activity_settings" />
<activity android:name=".UserActivity"></activity>
</application>
</manifest>
これは、これが不明である場合にはとても残念なネットワークを必要とする私の最初のプロジェクト、そして私の最初のstackoverflowの質問です。
マニフェストで追加のインターネットアクセス権がありますか? –
私の答えを確認してください – diegoveloper