我正在开发一个需要与不同客户联系的网络服务 由于我从不知道客户端将使用什么语言,我想知道每种语言是否都可以检索并传递“System.Net.CookieContainer”类型的类。
Ex:我有一个Web服务,它验证客户端并返回一个CookieContainer(这可以在以下请求中传递)。通过这种方式,我可以保持该会话处于活动状态。
客户端1将使用.net(这很明显) 客户端2将使用php(这会工作吗?)。 客户端3将使用java(这会工作吗?)。
我之所以要使用它是因为用户可以使用我们的Web服务进行身份验证,并且在以下请求中他不需要再次进行身份验证。
经过一番搜索后,我找到了CookieContainer解决方案。
有什么想法吗?
干杯, 微米。
答案 0 :(得分:1)
如果从Web服务返回一个类,那么它将被序列化为XML。因为它是一个.net类.net语言将能够将它反序列化回实际的类。其他语言只能访问序列化类以获取数据,或者如果语言支持该功能,则可以将其称为与类的xsd complextype匹配的自定义类。但是这只会引入类中的任何数据,作为类的一部分的任何方法实际上都不是序列化的,只有它们在.net中才会被反序列化.net将实例化相关类并填充带有序列化类数据的属性。
答案 1 :(得分:1)
听起来您只是希望人们能够在使用您的网络服务之前进行身份验证。为此,您不需要来回传递CookieContainer
类,您只需使用表单身份验证即可让人们登录。
有人通过某些登录功能传递正确的凭据后,您可以致电FormsAuthentication.SetAuthCookie
设置其会话信息。然后,在每次通话时,您都可以检查以确保通过User.Identity.IsAuthenticated
现在,如果您的客户端不是Web浏览器而且还没有自动神奇地处理cookie,那么您需要创建一种存储和管理cookie的方法。如果您的客户端是用.NET编写的,那么您可以使用CookieContainer
类来包含和管理从Web服务发回的身份验证cookie。
答案 2 :(得分:0)
目前还不清楚你的意思是“返回一个CookieContainer”。顾名思义,Web服务是Web上的服务 - 在Web上,我们有 webrequests (HTTP请求),它们返回 HTTP响应< / em>的。 HTTP响应可能包含也可能不包含客户端将记住以便以后请求的cookie。到目前为止,这并不依赖于任何编程语言。
您没有指定Web服务的内容,但由于您指的是.NET类型,可能是某些.NET语言,可能是C#/ ASP.NET。我不确定你将如何“返回一个CookieContainer”;通常,您可以使用SetCookie(...)
对象上的HttpResponse
方法设置Cookie。如果你这样做,PHP和Java会将cookie视为普通的HTTP cookie,并且不必关心它们来自.NET。例如,在PHP客户端中,您可能会使用HttpRequest::send来调用Web请求,然后您可以使用HttpRequest::getResponseCookies来检索Cookie。