How can I get HttpOnly cookies in Windows Phone 8?

后端 未结 2 665
轻奢々
轻奢々 2020-12-11 21:47

I am working in a Windows Phone 8 PCL project. I am using a 3rd party REST API and I need to use a few HttpOnly cookies originated by the API. It seems like getting/access

2条回答
  •  -上瘾入骨i
    2020-12-11 21:53

    The HttpOnly cookie is inside the CookieContainer, it's only that is not exposed. If you set the same instance of that CookieContainer to the next request it will set the hidden cookie there (as long as the request is made to the same site the cookie specifies).

    That solution will work until you need to serialize and deserialize the CookieContainer because you are restoring state. Once you do that you lose the HttpOnly cookies hidden inside the CookieContainer. So, a more permanent solution would be using Sockets directly for that request, read the raw request as a string, extract the cookie and set it to the next requests. Here's the code for using Sockets in Windows Phone 8:

    public async Task Send(Uri requestUri, string request)
    {
       var socket = new StreamSocket();
       var hostname = new HostName(requestUri.Host);
       await socket.ConnectAsync(hostname, requestUri.Port.ToString());
    
       var writer = new DataWriter(socket.OutputStream);
       writer.WriteString(request);
       await writer.StoreAsync();
    
       var reader = new DataReader(socket.InputStream) 
       { 
          InputStreamOptions = InputStreamOptions.Partial 
       };
       var count = await reader.LoadAsync(512);
    
        if (count > 0)
          return reader.ReadString(count);
        return null;
    }
    

提交回复
热议问题