我是android编程的初学者。我已经开始了一个测试项目,该项目是关于使用Android应用程序访问Web服务并在那里运行功能。我正在使用ksoap2来调用Web服务。
当我想通过电话登录数据库时,Web服务会向我返回会话ID。但之后,当我想在服务中运行其他函数,并在会话ID中传递它时,它告诉我有一个空对象引用。我尝试再次使用会话ID来获取登录详细信息,但它显示会话未指向任何会话。这是允许我连接Web服务的方法。而对于Android,我只是简单地使用ksoap2调用。
<WebMethod(True)> _
Public Function CompanyConnectionString() As String
Dim lErrCode, lRetCode As Long
Dim sErrMsg As String = ""
Dim sSessionID As String = ""
Dim oCompany As SAPbobsCOM.Company
oCompany = New SAPbobsCOM.Company
// User and other details to connect
oCompany.Server = "xx.x.x.xx" //ip address
oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2012
oCompany.DbUserName = "dbUser"
oCompany.DbPassword = "dbPassword"
oCompany.CompanyDB = "CompanyDB"
oCompany.UserName = "User"
oCompany.Password = "Password"
oCompany.LicenseServer = "xx.x.x.xx:xxxxx" // ip
lRetCode = oCompany.Connect
If lRetCode <> 0 Then
oCompany.GetLastError(lErrCode, sErrMsg)
sSessionID = lErrCode & "-" & sErrMsg
Else
sSessionID = Session.SessionID.ToString
Session.Add(sSessionID, oCompany)
''
Cookies.SetCookies(oCompany, "SID")
End If
Return sSessionID
End Function
我发现它可能会丢失会话ID,我以后无法获取其他功能的登录详细信息。对此有什么想法吗?我该怎么办?没有这个,我不能继续我的计划。
提前感谢..
答案 0 :(得分:0)
嗯,问题刚刚解决了。我和我的朋友发现这是因为max-age=0;
忘记了sessionID。所以我们将它添加到我们的sessionID并运行。
if (headerKey != null) {
if (headerKey.equals("Set-Cookie")) {
cookieBuilder.append(headerValue + "max-age=86400;");
}
} //headervalue is the sessionID
这将使会话在86400秒= 1天内保持活动状态。 因此sessionID可用于在Web服务上运行其他功能