Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Win Phone7 WebRequest第一次呼叫时未返回_C#_.net_Windows Phone 7_Webrequest - Fatal编程技术网

C# Win Phone7 WebRequest第一次呼叫时未返回

C# Win Phone7 WebRequest第一次呼叫时未返回,c#,.net,windows-phone-7,webrequest,C#,.net,Windows Phone 7,Webrequest,我正在创建一个与HTTP侦听器服务对话的应用程序 我已经从这个代码 这段代码似乎工作得几乎完美,只是在第一次调用时不起作用 该调用正在对服务进行调用,并且没有抛出错误。只是返回值为空 在第二次调用中,我可以毫无问题地获得返回值。如果我转到另一个页面并再次返回,我也会第一次得到返回值。这只发生在应用程序首次启动时的第一次呼叫上 任何想法都将不胜感激。代码如下 服务 DiagnosticLog.Write(99, DateTime.Now, "Phone Listener Called");

我正在创建一个与HTTP侦听器服务对话的应用程序

我已经从这个代码

这段代码似乎工作得几乎完美,只是在第一次调用时不起作用

该调用正在对服务进行调用,并且没有抛出错误。只是返回值为空

在第二次调用中,我可以毫无问题地获得返回值。如果我转到另一个页面并再次返回,我也会第一次得到返回值。这只发生在应用程序首次启动时的第一次呼叫上

任何想法都将不胜感激。代码如下


服务

DiagnosticLog.Write(99, DateTime.Now, "Phone Listener Called");
        IAsyncResult phoneResult = PhoneListener.BeginGetContext(new AsyncCallback(Phone), PhoneListener);
        HttpListenerContext context = null;
        HttpListenerResponse response = null;
        HttpListener _listener = (HttpListener)result.AsyncState;
        context = _listener.EndGetContext(result);
        HttpListenerRequest request = context.Request;
        response = context.Response;
        //response.ContentType = "text/plain";
        string postData = string.Empty;
        using (StreamReader sr = new StreamReader(request.InputStream))
        {
            DiagnosticLog.Write(99, DateTime.Now, "Reading Stream");
            postData = sr.ReadToEnd();
        }
        byte[] buffer;
        System.IO.Stream output = response.OutputStream;
        if (postData == "islogin")
        {
            buffer = System.Text.Encoding.UTF8.GetBytes("logincorrect");
            // Get a response stream and write the response to it.
            response.ContentLength64 = buffer.Length;
            output = response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
            DiagnosticLog.Write(99, DateTime.Now, "Good Return sent");
            output.Close();
        }
        else
        {
            buffer = System.Text.Encoding.UTF8.GetBytes("loginincorrect");
            // Get a response stream and write the response to it.
            response.ContentLength64 = buffer.Length;
            output = response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
            DiagnosticLog.Write(99, DateTime.Now, "Bad Return sent");
            output.Close();
        }

代码(手机应用程序)


答案是手机会继续,所以当页面更新时,仍然没有数据

我想我可能已经弄明白了。如果我是对的,我会把答案贴出来。代码不会等到流响应后才移动到下一节。所以当我第一次尝试获取值时,它是空的,因为它仍在返回的路上。
WebRequest request = WebRequest.Create("http://127.0.0.1:8080/phone");
        request.Method = "POST";
        request.BeginGetRequestStream(ar =>
        {
                var requestStream = request.EndGetRequestStream(ar);
                using (StreamWriter sw = new StreamWriter(requestStream))
                {
                    sw.Write("islogin");
                }
                request.BeginGetResponse(a =>
                {
                    try
                    {
                        WebResponse response = request.EndGetResponse(a);
                        Stream responseStream = response.GetResponseStream();
                        using(var sr = new StreamReader(responseStream))
                        {
                            Storage.ReturnValue = sr.ReadToEnd().ToString();
                        }
                    }
                    catch(WebException ex)
                    {
                        Deployment.Current.Dispatcher.BeginInvoke(() =>
                        {
                            MessageBox.Show(ex.ToString());
                        });
                    }
                }, null);

            }, null);
        txtLoginUsername.Text = Storage.ReturnValue;