Windows phone 7 无法使用windows phone应用中的web浏览器控件设置Cookie

Windows phone 7 无法使用windows phone应用中的web浏览器控件设置Cookie,windows-phone-7,windows-phone-8,httpwebrequest,webbrowser-control,session-cookies,Windows Phone 7,Windows Phone 8,Httpwebrequest,Webbrowser Control,Session Cookies,我目前正在开发一款win7&8混合应用程序 我需要在混合应用程序中维护会话。因为该用户必须在应用程序中登录。然后,为了维护会话,我们将请求登录身份验证服务。一旦我们在web服务响应中获得cookie,我们将将这些cookie注入windows phone web浏览器控件,以显示相关页面 要从登录服务记录Cookie,请执行以下操作: 通过传递post参数为登录身份验证创建了httpwebrequest。从回调httpwebresponse(一个JSON响应)捕获集Cookie,并将其保存在局部

我目前正在开发一款win7&8混合应用程序

我需要在混合应用程序中维护会话。因为该用户必须在应用程序中登录。然后,为了维护会话,我们将请求登录身份验证服务。一旦我们在web服务响应中获得cookie,我们将将这些cookie注入windows phone web浏览器控件,以显示相关页面

要从登录服务记录Cookie,请执行以下操作: 通过传递post参数为登录身份验证创建了httpwebrequest。从回调httpwebresponse(一个JSON响应)捕获集Cookie,并将其保存在局部变量/Cookie容器/Cookie集合中

要将Cookie设置为其他请求,请执行以下操作:

->在所有其他请求的web浏览器控件的标头字段中传递cookie。它不起作用

->创建了HttpWebRequest并在标头字段中设置cookies

尝试使用标头分配[cookie]=变量数据/cookie容器数据/cookie收集数据。 通过创建cookie容器请求分配给请求。CookieContainer=cookie容器数据/cookie集合 数据 ->已将html web响应从异步回调方法保存到字符串变量中,并尝试将其加载到web浏览器控件中

web浏览器控件只有一种方法可以加载html网页,即webbrowser.NavigateToStringstring html

从回调响应方法触发了另一个事件处理程序。我们可以在字符串变量中看到html代码。但事实确实如此 在浏览器中显示黑色页面

试图将html文件保存在隔离存储中,并使浏览器导航到文件位置。它正在显示一个空白 页面

尝试附加+httpWebResponse+-它显示的页面没有任何CSS或 图片。页面中的进一步导航也不会发生

影响:未通过应用程序维护会话

使用的工具: Microsoft Visual studio ultimate 2010第10版, Microsoft.Net framework 4.0版, Windows Phone 7.1 SDK

有人能帮我吗?提前谢谢

请参阅以下代码: 要从登录服务记录Cookie,请执行以下操作:

私人无效后登录请求 {

        string AuthServiceUri = "Service URL";
        HttpWebRequest AuthReq = HttpWebRequest.Create(AuthServiceUri) as HttpWebRequest;
        AuthReq.CookieContainer = new CookieContainer();
        AuthReq.ContentType = "application/x-www-form-urlencoded";
        AuthReq.Method = "POST";

        AuthReq.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), AuthReq);
    }

    void GetRequestStreamCallback(IAsyncResult callbackResult)
    {
        HttpWebRequest Request = (HttpWebRequest)callbackResult.AsyncState;

        Stream postStream = Request.EndGetRequestStream(callbackResult);
        string postData = "Postdata parameters";
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        postStream.Write(byteArray, 0, byteArray.Length);
        postStream.Close();
        myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), Request);

    }

    void GetResponsetStreamCallback(IAsyncResult callbackResult)
    {

        try
        {

            HttpWebRequest callBackRequest = (HttpWebRequest)callbackResult.AsyncState;

            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);

            CookieCollection cookiecollec = new CookieCollection();
            cookiecollec = response.Cookies;
            App.cookieCollection = cookiecollec; //global varaiable

        }
        catch (Exception e)
        {
    MessageBox.Show(e.Message);
        }
    }
                    Uri ServiceUri = new Uri(PostURL); //Service URL

                    HttpWebRequest requestURL = HttpWebRequest.CreateServiceUri as HttpWebRequest;
                    requestURL.ContentType = "application/x-www-form-urlencoded";
                    requestURL.Method = "POST";                        
                    requestURL.CookieContainer = new CookieContainer();
                    requestURL.CookieContainer.Add(ServiceUri, App.cookieCollection);

                    requestURL.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), requestURL); 


             }
             try
             {

                 HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
                 HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);


                // MessageBox.Show(response.Cookies.ToString());

                 string responseString = "<html><head></head><body>";
                 Stream streamResponse = response.GetResponseStream();
                 StreamReader reader = new StreamReader(streamResponse);
                 responseString = responseString + reader.ReadToEnd() + "</body></html>";                   
                 streamResponse.Close();
                 reader.Close();
                 response.Close();



                 this.Dispatcher.BeginInvoke(() =>
                 {

                     webBrowser.IsScriptEnabled = true;
                     webBrowser.NavigateToString(responseString);

                 });
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message);
             }
         }
另一个带有已记录Cookie的httpwebrequest:

私有void ResponsivePostURLstring页面名、字符串PostURL、字符串PostDatas {

        string AuthServiceUri = "Service URL";
        HttpWebRequest AuthReq = HttpWebRequest.Create(AuthServiceUri) as HttpWebRequest;
        AuthReq.CookieContainer = new CookieContainer();
        AuthReq.ContentType = "application/x-www-form-urlencoded";
        AuthReq.Method = "POST";

        AuthReq.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), AuthReq);
    }

    void GetRequestStreamCallback(IAsyncResult callbackResult)
    {
        HttpWebRequest Request = (HttpWebRequest)callbackResult.AsyncState;

        Stream postStream = Request.EndGetRequestStream(callbackResult);
        string postData = "Postdata parameters";
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        postStream.Write(byteArray, 0, byteArray.Length);
        postStream.Close();
        myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), Request);

    }

    void GetResponsetStreamCallback(IAsyncResult callbackResult)
    {

        try
        {

            HttpWebRequest callBackRequest = (HttpWebRequest)callbackResult.AsyncState;

            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);

            CookieCollection cookiecollec = new CookieCollection();
            cookiecollec = response.Cookies;
            App.cookieCollection = cookiecollec; //global varaiable

        }
        catch (Exception e)
        {
    MessageBox.Show(e.Message);
        }
    }
                    Uri ServiceUri = new Uri(PostURL); //Service URL

                    HttpWebRequest requestURL = HttpWebRequest.CreateServiceUri as HttpWebRequest;
                    requestURL.ContentType = "application/x-www-form-urlencoded";
                    requestURL.Method = "POST";                        
                    requestURL.CookieContainer = new CookieContainer();
                    requestURL.CookieContainer.Add(ServiceUri, App.cookieCollection);

                    requestURL.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), requestURL); 


             }
             try
             {

                 HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
                 HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);


                // MessageBox.Show(response.Cookies.ToString());

                 string responseString = "<html><head></head><body>";
                 Stream streamResponse = response.GetResponseStream();
                 StreamReader reader = new StreamReader(streamResponse);
                 responseString = responseString + reader.ReadToEnd() + "</body></html>";                   
                 streamResponse.Close();
                 reader.Close();
                 response.Close();



                 this.Dispatcher.BeginInvoke(() =>
                 {

                     webBrowser.IsScriptEnabled = true;
                     webBrowser.NavigateToString(responseString);

                 });
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message);
             }
         }
void GetResponseStreamCallbackIAsyncResult callbackResult {

        string AuthServiceUri = "Service URL";
        HttpWebRequest AuthReq = HttpWebRequest.Create(AuthServiceUri) as HttpWebRequest;
        AuthReq.CookieContainer = new CookieContainer();
        AuthReq.ContentType = "application/x-www-form-urlencoded";
        AuthReq.Method = "POST";

        AuthReq.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), AuthReq);
    }

    void GetRequestStreamCallback(IAsyncResult callbackResult)
    {
        HttpWebRequest Request = (HttpWebRequest)callbackResult.AsyncState;

        Stream postStream = Request.EndGetRequestStream(callbackResult);
        string postData = "Postdata parameters";
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        postStream.Write(byteArray, 0, byteArray.Length);
        postStream.Close();
        myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), Request);

    }

    void GetResponsetStreamCallback(IAsyncResult callbackResult)
    {

        try
        {

            HttpWebRequest callBackRequest = (HttpWebRequest)callbackResult.AsyncState;

            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);

            CookieCollection cookiecollec = new CookieCollection();
            cookiecollec = response.Cookies;
            App.cookieCollection = cookiecollec; //global varaiable

        }
        catch (Exception e)
        {
    MessageBox.Show(e.Message);
        }
    }
                    Uri ServiceUri = new Uri(PostURL); //Service URL

                    HttpWebRequest requestURL = HttpWebRequest.CreateServiceUri as HttpWebRequest;
                    requestURL.ContentType = "application/x-www-form-urlencoded";
                    requestURL.Method = "POST";                        
                    requestURL.CookieContainer = new CookieContainer();
                    requestURL.CookieContainer.Add(ServiceUri, App.cookieCollection);

                    requestURL.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), requestURL); 


             }
             try
             {

                 HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
                 HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);


                // MessageBox.Show(response.Cookies.ToString());

                 string responseString = "<html><head></head><body>";
                 Stream streamResponse = response.GetResponseStream();
                 StreamReader reader = new StreamReader(streamResponse);
                 responseString = responseString + reader.ReadToEnd() + "</body></html>";                   
                 streamResponse.Close();
                 reader.Close();
                 response.Close();



                 this.Dispatcher.BeginInvoke(() =>
                 {

                     webBrowser.IsScriptEnabled = true;
                     webBrowser.NavigateToString(responseString);

                 });
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message);
             }
         }

这个问题很好,但我觉得很难理解。一个代码样本来重现你的案例?@Mikko Viitala请找到代码样本供你参考