0

SAP にリクエストを送信するアプリを開発しています。アプリを使用している間、接続を維持するために取り組んできました。

mainconnectionlistの3 つのアクティビティがあります。

アプリを起動すると、接続をタップしてSAPとデバイス間の接続を確立し、正常に接続した後、アプリがメインに移動します。

私が抱えている問題は、メインに戻るボタンを押してリストアクティビティに移動すると、接続されていた DefaultHttpClient が失われたため、データを取得できないことです。

public String logInToSAP(String PIP, int PPort, String PSchema, String PUser, String PPassword) {
    String result = "";

    //      HttpHost targetHost = new HttpHost(PIP, PPort, PSchema);
    HttpHost targetHost = new HttpHost(PIP, PPort, PSchema);

    //          DefaultHttpClient httpclient = new DefaultHttpClient();
    httpclient.getCredentialsProvider().setCredentials(new AuthScope(targetHost.getHostName(), 
            targetHost.getPort()), new UsernamePasswordCredentials(PUser, PPassword));

    // Create AuthCache instance
    AuthCache authCache = new BasicAuthCache();

    // Generate BASIC scheme object and add it to the local auth cache
    BasicScheme basicAuth = new BasicScheme();
    authCache.put(targetHost, basicAuth);

    // Add AuthCache to the execution context
    BasicHttpContext localcontext = new BasicHttpContext();
    localcontext.setAttribute(ClientContext.AUTH_SCHEME_PREF, authCache);

    HttpGet request = new HttpGet("/sap/z_conn");

    ResponseHandler<String> handler = new BasicResponseHandler();
    try {
        result = httpclient.execute(targetHost, request, handler);
    } catch (ClientProtocolException e) {
        e.printStackTrace();
        Toast.makeText(this, "Wrong Connection Parameters", Toast.LENGTH_SHORT).show();         
        result = "Wrong Connection Parameters";
    } catch (IOException e) {
        e.printStackTrace();            
        Toast.makeText(this, "IOException", Toast.LENGTH_SHORT).show();
        result = "IOException";
    }
    return result;
}   
4

1 に答える 1

1

Application オブジェクトを拡張して、そこに DefaultHttpClient を配置できます。

Application オブジェクトを拡張して使用する方法:

Androidでグローバル変数を宣言するには?

于 2012-06-04T20:31:05.880 に答える