how to make cookies into an array?

  • Thread starter Thread starter André
  • Start date Start date
A

André

Hi,

I need several cookies depending of an variable (x), so i defined a
HttpCookie() as an array.
My problems:
1)I get the error: Object reference not set to an instance of an object.
2)My second question is: how to request those cookies, because there is no
name?

Thanks
André


I did:
x=5
Dim cok(x) As New HttpCookie 'can't give a name to the cookie
.....

for k=1 to x
cok(k).Value = "cookie" & k
Response.Cookies.Add(cok(k))
next
 
If you are using VB2005, you can switch to one of the Generic collections
that includes a key so that you can look up the cookie by name.

Dim allCookies As Generic.Dictionary(Of String, HttpCookie)

Add new cookies to the dictionary this way:

allCookies.Add(cookieName, theCookieItself)

Access the cookie this way:

theRetrievedCookie = allCookies(cookieName)
 
Hi,

thanks for replying ...

I tried this (it must be a loop because i never don't know in advance how
many cookies i need)
But i get the error: "value of type string cannot be converted to
system.web.httpcookie"
How can i give the value of the cookie?
Thanks

Dim allCookies As Generic.Dictionary(Of String, HttpCookie)
Dim i As Integer
Dim cc(5) As String
For i = 1 To 5
allCookies.Add(cc(i), "test" & i)
Next
 
But you are trying to convert "test1" to a cookie. That is a string, not
a cookie. You must specifically create an instance of HttpCookie, fill in
its constructor or fields as needed, and then store it. I haven't used that
object myself, but the code would be something like this.

Dim allCookies As Generic.Dictionary(Of String, HttpCookie)
Dim oneCookie As HttpCookie
Dim i As Integer

For counter = 1 To 5
oneCookie = New HttpCookie
' !!! Fill in all of oneCookie's fields here, then...
allCookies.Add("test" & counter, oneCookie)
Next counter
 
Ok, thanks

Tim Patrick said:
But you are trying to convert "test1" to a cookie. That is a string, not a
cookie. You must specifically create an instance of HttpCookie, fill in
its constructor or fields as needed, and then store it. I haven't used
that object myself, but the code would be something like this.

Dim allCookies As Generic.Dictionary(Of String, HttpCookie)
Dim oneCookie As HttpCookie
Dim i As Integer

For counter = 1 To 5
oneCookie = New HttpCookie
' !!! Fill in all of oneCookie's fields here, then...
allCookies.Add("test" & counter, oneCookie)
Next counter
 
Tim, don't become angry (i'm learning), but it still doesn't work ...

If i do what you wrote here, i get an error with the line:
oneCookie = New HttpCookie

the error is: "overload resolution failed because no accessible 'new'
accepts this number of arguments"

so i tried this (and the error is gone): oneCookie = New HttpCookie("ok")
the whole code is:
Dim allCookies As New Generic.Dictionary(Of String, HttpCookie)
Dim i As Integer
Dim oneCookie As HttpCookie
For i = 1 To 5
oneCookie = New HttpCookie("ok")
oneCookie.Value = i
allCookies.Add("test" & i, oneCookie)
Next

But now, how can i retrieve the cookies? I did:

Dim allCookies As New Generic.Dictionary(Of String, HttpCookie)
Dim i As Integer
Dim cc(5) As String
Dim retCookie As HttpCookie
For i = 1 To 5
retCookie = allCookies("test" & i)
cc(i) = retCookie.Value
Response.Write(cc(i) & " ")
Next

And the error is now: "The given key was not present in the dictionary"
Can you help me a last time? Thanks
 
Since I'm not sure of what you are doing, I'm not fully sure of the answer
to give you. Cookies are normally only used in the context of a web page,
and ASP.NET exposes two collections of cookies, one through the Request object
and one through the Response object. I'm not sure why you want to create
your own disconnected set of cookies.

I would confirm that you have read up on the HttpCookie object and its related
HttpCookieCollection object (instead of Generic.Dictionary). HttpCookie has
its own name, so it seems a collection-specified name isn't really necessary.

Maybe if you could explain your purpose, it would make the problem easier
to diagnose.
 
Tim, it's ok, i think i understand it now ...


Tim Patrick said:
Since I'm not sure of what you are doing, I'm not fully sure of the answer
to give you. Cookies are normally only used in the context of a web page,
and ASP.NET exposes two collections of cookies, one through the Request
object and one through the Response object. I'm not sure why you want to
create your own disconnected set of cookies.

I would confirm that you have read up on the HttpCookie object and its
related HttpCookieCollection object (instead of Generic.Dictionary).
HttpCookie has its own name, so it seems a collection-specified name isn't
really necessary.

Maybe if you could explain your purpose, it would make the problem easier
to diagnose.
 
Back
Top