Android无法使用会话ID从Web服务检索数据

时间:2015-05-07 16:25:51

标签: android web-services session sessionid

我是android编程的初学者。我已经开始了一个测试项目,该项目是关于使用Android应用程序访问Web服务并在那里运行功能。我正在使用kso​​ap2来调用Web服务。

当我想通过电话登录数据库时,Web服务会向我返回会话ID。但之后,当我想在服务中运行其他函数,并在会话ID中传递它时,它告诉我有一个空对象引用。我尝试再次使用会话ID来获取登录详细信息,但它显示会话未指向任何会话。这是允许我连接Web服务的方法。而对于Android,我只是简单地使用kso​​ap2调用。

 <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,我以后无法获取其他功能的登录详细信息。对此有什么想法吗?我该怎么办?没有这个,我不能继续我的计划。

提前感谢..

1 个答案:

答案 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服务上运行其他功能