Android 使用DefaultHttpClient保持活动之间的连接
我正在开发一个向SAP发送请求的应用程序,我一直在努力在应用程序中保持连接 我有三个活动:主活动、连接活动和列表活动 当我启动应用程序时,当我点击connection在SAP和设备之间建立连接并成功连接后,应用程序将转到main 我遇到的问题是,当我按下返回按钮到main并转到list activity时,我无法检索数据,因为我丢失了具有连接的DefaultHttpClientAndroid 使用DefaultHttpClient保持活动之间的连接,android,android-activity,httpclient,keep-alive,Android,Android Activity,Httpclient,Keep Alive,我正在开发一个向SAP发送请求的应用程序,我一直在努力在应用程序中保持连接 我有三个活动:主活动、连接活动和列表活动 当我启动应用程序时,当我点击connection在SAP和设备之间建立连接并成功连接后,应用程序将转到main 我遇到的问题是,当我按下返回按钮到main并转到list activity时,我无法检索数据,因为我丢失了具有连接的DefaultHttpClient public String logInToSAP(String PIP, int PPort, String PSch
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;
}
publicstringlogintosap(stringpip、int-PPort、stringpschema、stringpuser、stringppassword){
字符串结果=”;
//HttpHost targetHost=新的HttpHost(PIP、PPort、PSchema);
HttpHost targetHost=新的HttpHost(PIP、PPort、PSchema);
//DefaultHttpClient httpclient=新的DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(新的AuthScope(targetHost.getHostName()),
getPort()),新用户名密码凭证(PUser,PPassword));
//创建AuthCache实例
AuthCache AuthCache=new BasicAuthCache();
//生成基本方案对象并将其添加到本地身份验证缓存
碱性血红素碱性血红素=新碱性血红素();
authCache.put(targetHost,basicAuth);
//将AuthCache添加到执行上下文
BasicHttpContext localcontext=新的BasicHttpContext();
setAttribute(ClientContext.AUTH\u SCHEME\u PREF,authCache);
HttpGet请求=新的HttpGet(“/sap/z_conn”);
ResponseHandler=new BasicResponseHandler();
试一试{
结果=httpclient.execute(targetHost、request、handler);
}捕获(客户端协议例外e){
e、 printStackTrace();
Toast.makeText(这是“错误的连接参数”,Toast.LENGTH_SHORT).show();
结果=“连接参数错误”;
}捕获(IOE异常){
e、 printStackTrace();
Toast.makeText(这个“IOException”,Toast.LENGTH_SHORT).show();
结果=“IOException”;
}
返回结果;
}
您可以扩展应用程序对象并将DefaultHttpClient放在其中
如何扩展和使用应用程序对象:
也许持久保存SAP设置的(会话)cookie就足够了?记忆中的单身汉应该就是这样。