简体   繁体   English

SUP:通过中继服务器连接Android应用SAP-SUP

[英]SUP : Connect Android app SAP-SUP through relay server

I am a mobile developer and now im working on an Android app that connects to SAP backend. 我是一名移动开发人员,现在正在开发可连接到SAP后端的Android应用程序。

i need to create MBOs from BAPIs and read data from those BAPIs 我需要从BAPI创建MBO,并从这些BAPI读取数据

I managed to create the MBOs from BAPI_FLIGHT_GETLIST BAPI 我设法从BAPI_FLIGHT_GETLIST BAPI创建MBO

i generated the code as Android code and i created the activity to read the data from this MBO 我将代码生成为Android代码,并创建了从该MBO读取数据的活动

when i run the application on android device i get below error in this line 当我在android设备上运行应用程序时,此行出现以下错误

app.registerApplication(TIMEOUT);

can anyone help me with this error ? 谁能帮助我解决这个错误?

i don't understand what am i doing wrong 我不明白我在做什么错

MainActivity: 主要活动:

private static final int REQUEST_DETAIL = 99;
          private static String USERNAME = "*********";
          private static String PASSWORD = "**********";
          private static String HOST = "************";
          private static int PORT = 5001; // 2480
          private static int sync_port = 2480;
          private static int TIMEOUT = 600;
private GetFlightsListAdapter adapter;


@Override
          protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);
                    initializeApplication();
          }

private void initializeApplication() {

                      try {
                    // 1. App initialization
                       Application app = Application.getInstance();
                       app.setApplicationIdentifier("GetFlights");
                       app.setApplicationContext(MainActivity.this);
                       GetFlightsDB.setApplication(app);
                       GetFlightsDB.getSynchronizationProfile().setServerName(HOST);
                    // 2. Set connection properties
                       ConnectionProperties connProps = app.getConnectionProperties();
                       LoginCredentials loginCredentials = new LoginCredentials(USERNAME,PASSWORD);
                       connProps.setLoginCredentials(loginCredentials);
                       connProps.setServerName(HOST);
                       connProps.setPortNumber(PORT);
                      //3. App registration
                       if (app.getRegistrationStatus() != RegistrationStatus.REGISTERED) {
                           app.registerApplication(TIMEOUT); // ERROR HAPPENS HERE <-----------
                       } else {
                           app.startConnection(TIMEOUT);
                       }
                       //4. Sync data          
                       if (!GetFlightsDB.isSynchronized("default")) {
                                 GetFlightsDB.disableChangeLog();
                                 GetFlightsDB.synchronize(); // Initial Synchronize
                           SynchronizationGroup sg = GetFlightsDB.getSynchronizationGroup("default");
                           sg.setEnableSIS(true);
                           sg.save();
                           GetFlightsDB.synchronize();
                       }
                       GetFlightsDB.enableChangeLog();
                   }

             finally {
                       Log.v("Finally", "Finally");
                   }


          }

Error 错误

Caused by: com.sybase.mobile.ApplicationRuntimeException: Error: 558 Message: 'Could not connect to server. Verify Relay Server URL Template'
E/AndroidRuntime(273):           at com.sybase.mobile.Application.registerApplication(Application.java:409)
E/AndroidRuntime(273):           at com.example.getflightsnative.MainActivity.initializeApplication(MainActivity.java:84)

Manifest file : 清单文件:

<uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />


        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.getflightsnative.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />


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


        <uses-sdk
            android:minSdkVersion="3"
            android:targetSdkVersion="7" >
        </uses-sdk>

To Connect to relay server you have to provide the Farm id. 要连接到中继服务器,您必须提供服务器场ID。

ConnectionProperties connProps = app.getConnectionProperties();
LoginCredentials loginCredentials = new    LoginCredentials(USERNAME,PASSWORD);
connProps.setLoginCredentials(loginCredentials);
connProps.setServerName(HOST);
connProps.setPortNumber(POST); port for relay server is 80
connProps.setUrlSuffix("/ias_relay_server/client/rs_client.dll/%cid%/tm");
connProps.setFarmId(FARMID); //provide MBS farm Id for registration. And sync will be      different

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM