Отправка данных в RESTful-webservice - Почему этот код работает в затмении, но не на Android? - PullRequest
0 голосов
/ 21 февраля 2019

Я пытался вызвать asp.net RESTful API - Webservice с устройства Android, но он пока не работает.Когда я запускаю свой код, он генерирует исключение, но exception.getMessage () ничего не возвращает.
Я только знаю, что это не может быть ни IO-, ни MalformedURLException, поскольку я тестировал код с помощью catchдля обоих соответственно вместо одного улова для исключений в целом, которые приводят к сбою приложения.
Веб-сервер работает нормально, также мне удалось вызвать его из обычного Java-клиента в Eclipse.Я также могу получить к нему доступ со своего устройства, поэтому я пришел бы к выводу, что должно быть какое-то отсутствующее разрешение Android, а не проблема с сервером или java-кодом.

РЕДАКТИРОВАТЬ: Я думаю, что исключение выдается "OutputStream os = conn.getOutputStream ()"

public void postRequest(View view) {
      try {
          URL url = new URL("http://IP:PORT/api/get");
          HttpURLConnection conn = (HttpURLConnection) url.openConnection();
          conn.setDoOutput(true);
          conn.setRequestMethod("POST");
          conn.setRequestProperty("Content-Type", "application/json");
          String input = "{\"parameter1\":\"abc\",\"parameter2\":\"def\"}";

          OutputStream os = conn.getOutputStream();
          os.write(input.getBytes());
          os.flush();
      } catch (Exception e) {
          e.printStackTrace();
      }
}

Манифест

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="PPEASE Fotos"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".SettingsActivity"
        android:parentActivityName=".FullscreenActivity">
        <!-- The meta-data tag is required if you support API level 15 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".FullscreenActivity" />
    </activity>
    <activity
        android:name=".FullscreenActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:hardwareAccelerated="true"
        android:label="@string/app_name"
        android:theme="@style/FullscreenTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Источники: https://www.mkyong.com/webservices/jax-rs/restfull-java-client-with-java-net-url/ https://developer.android.com/reference/java/net/HttpURLConnection.html

...