how to make cookies into an array?

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
 
T

Tim Patrick

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)
 
A

André

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
 
T

Tim Patrick

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
 
A

André

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
 
A

André

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
 
T

Tim Patrick

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.
 
A

André

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top