【问题标题】:How to store device id in web service in windows phone?如何将设备ID存储在Windows Phone的Web服务中?
【发布时间】:2014-02-20 00:51:16
【问题描述】:

这是我的网络服务网址 http://www.newsquizapp.com/webservice/get_question

参数: 1. device_id 2. quiz_type

方法:发帖

我已经检索到 device_id 和 quiz_type 但我的问题是如何发送 device_id 和 quiz_type 以便将设备 ID 存储在网络服务中。

    void SendPost()
    {
        var url = "http://www.newsquizapp.com/webservice/get_question";

        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
        webRequest.Method = "POST";
        webRequest.ContentType = "application/x-www-form-urlencoded";

        webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
    }
    void GetRequestStreamCallback(IAsyncResult callbackResult)
    {
        HttpWebRequest webRequest = (HttpWebRequest)callbackResult.AsyncState;
        Stream postStream = webRequest.EndGetRequestStream(callbackResult);
        // static device id 
        string postData = "device_id=001&quiz_type=all";

        byte[] byteArray = Encoding.UTF8.GetBytes(postData);

        postStream.Write(byteArray, 0, byteArray.Length);
        postStream.Close();

        webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest);
    }

    void GetResponseCallback(IAsyncResult callbackResult)
    {
        try
        {
            HttpWebRequest webRequest = (HttpWebRequest)callbackResult.AsyncState;
            HttpWebResponse response;
            response = (HttpWebResponse)webRequest.EndGetResponse(callbackResult);
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(streamResponse);
            var Response = streamReader.ReadToEnd();
            streamResponse.Close();
            streamReader.Close();
            response.Close();

        }
        catch (WebException e)
        {
            // Error treatment
            // ...             
        }
    }
    public void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(download);
        client.DownloadStringAsync(new Uri("http://www.newsquizapp.com/webservice/get_question"));
    }

    public void download(object sender, DownloadStringCompletedEventArgs e)
    {
        var objMain = JsonConvert.DeserializeObject<Main>(e.Result);
        question = objMain.questions;
        DisplayQuestion();
    }
    protected void DisplayQuestion()
    {
        rb1.Visibility = Visibility.Visible;
        rb2.Visibility = Visibility.Visible;
        rb3.Visibility = Visibility.Visible;
        rb4.Visibility = Visibility.Visible;

        Question objQue = question[counter];
        txtquestion.Text = objQue.questionTitle;
        rb1.Content = objQue.answers[0].answer;
        rb2.Content = objQue.answers[1].answer;
        rb3.Content = objQue.answers[2].answer;

        if (objQue.answers.Count == 3)
        {
            rb4.Visibility = Visibility.Collapsed;
        }
        else
        {
            rb4.Visibility = Visibility.Visible;
            rb4.Content = objQue.answers[3].answer;
        }
    }
    protected void radio_checked(object sender, RoutedEventArgs e)
    {
        btnFinish.Visibility = Visibility.Collapsed;
        btnSubmit.Visibility = Visibility.Visible;
    }
    protected void btnsubmit_click(object sender, RoutedEventArgs e)
    {
        Question que = question[counter];

        var correctAnswerId = que.correctAnswerId;

        string answer = string.Empty;

        if (que.answers[0].answerId == correctAnswerId)
        {
            answer = que.answers[0].answer;
        }

        if (que.answers[1].answerId == correctAnswerId)
        {
            answer = que.answers[1].answer;
        }

        if (que.answers[2].answerId == correctAnswerId)
        {
            answer = que.answers[2].answer;
        }

        if (que.answers.Count == 3)
        {
            rb4.Visibility = Visibility.Collapsed;
        }

        else if (que.answers[3].answerId == correctAnswerId)
        {
            answer = que.answers[3].answer;
        }

        if (rb1.IsChecked == true && que.answers[0].answerId == correctAnswerId)
        {
            txtanswer.Text = que.answers[0].answer;
            rb1.Visibility = Visibility.Collapsed;
            rb2.Visibility = Visibility.Collapsed;
            rb3.Visibility = Visibility.Collapsed;
            rb4.Visibility = Visibility.Collapsed;

        }

        else if (rb1.IsChecked == true && que.answers[0].answerId != correctAnswerId)
        {
            rb1.Visibility = Visibility.Visible;
            rb2.Visibility = Visibility.Collapsed;
            rb3.Visibility = Visibility.Collapsed;
            rb4.Visibility = Visibility.Collapsed;
            txtanswer.Text = answer;

        }

        else if (rb2.IsChecked == true && que.answers[1].answerId == correctAnswerId)
        {
            txtanswer.Text = que.answers[1].answer;
            rb1.Visibility = Visibility.Collapsed;
            rb2.Visibility = Visibility.Collapsed;
            rb3.Visibility = Visibility.Collapsed;
            rb4.Visibility = Visibility.Collapsed;
        }
        else if (rb2.IsChecked == true && que.answers[1].answerId != correctAnswerId)
        {
            rb1.Visibility = Visibility.Collapsed;
            rb2.Visibility = Visibility.Visible;
            rb3.Visibility = Visibility.Collapsed;
            rb4.Visibility = Visibility.Collapsed;
            txtanswer.Text = answer;

        }

        else if (rb3.IsChecked == true && que.answers[2].answerId == correctAnswerId)
        {
            txtanswer.Text = que.answers[2].answer;
            rb1.Visibility = Visibility.Collapsed;
            rb2.Visibility = Visibility.Collapsed;
            rb3.Visibility = Visibility.Collapsed;
            rb4.Visibility = Visibility.Collapsed;
        }
        else if (rb3.IsChecked == true && que.answers[2].answerId != correctAnswerId)
        {
            rb1.Visibility = Visibility.Collapsed;
            rb2.Visibility = Visibility.Collapsed;
            rb3.Visibility = Visibility.Visible;
            rb4.Visibility = Visibility.Collapsed;
            txtanswer.Text = answer;

        }
        else if (que.answers.Count == 3)
        {
            rb4.Visibility = Visibility.Collapsed;
        }

        else if (rb4.IsChecked == true && que.answers[3].answerId == correctAnswerId)
        {
            txtanswer.Text = que.answers[3].answer;
            rb1.Visibility = Visibility.Collapsed;
            rb2.Visibility = Visibility.Collapsed;
            rb3.Visibility = Visibility.Collapsed;
            rb4.Visibility = Visibility.Collapsed;
        }
        else if (rb4.IsChecked == true && que.answers[3].answerId != correctAnswerId)
        {
            rb1.Visibility = Visibility.Collapsed;
            rb2.Visibility = Visibility.Collapsed;
            rb3.Visibility = Visibility.Collapsed;
            rb4.Visibility = Visibility.Visible;
            txtanswer.Text = answer;

        }
        btnNext.Visibility = Visibility.Visible;
    }

    protected void btnnext_click(object sender, RoutedEventArgs e)
    {
        counter++;
        if (counter >= question.Count)
        {
            txtanswer.Text = "no more question right now....";
        }
        else
        {
            DisplayQuestion();
        }
    }
}

一旦用户设备 ID 存储在数据库中,如果用户关闭应用并再次打开它,他们将不会得到相同的问题...

【问题讨论】:

标签: web-services windows-phone-7 windows-phone-8


【解决方案1】:

如果您只想将数据发布到网络服务,您可以使用 WebClient 类。这是实现目标的最简单方法。

示例:

Uri uri = new Uri("http://www.newsquizapp.com/webservice/get_question");
string data = "device_id=123&quiz_type=all";
WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
wc.UploadStringAsync(uri, data);
wc.UploadStringCompleted += wc_UploadComplete;

public void wc_UploadComplete(object sender, UploadStringCompletedEventArgs e)
{
   string result = e.Result.ToString();
   MessageBox.Show(result);
}

试试这个。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    也许HTTPRequest 是您正在寻找的。​​p>

    http://dotnet-snippets.de/snippet/simple-web-request-with-web-response/215

    【讨论】:

    • 你能具体说明问题吗?请求是否正在传输? Web 服务是否收到请求?服务器端处理请求是否有问题?
    【解决方案3】:

    Http Post for Windows Phone 8

    检查 nemesisfixx 的答案。 我发现它很有帮助。

    如果您可以访问 web 服务代码,您可以修改它以将 Device_uid 作为 url 参数,从而避免所有额外的工作。我这样做了。

    【讨论】:

    • 感谢您的链接,但我不明白它的真正含义。如果您请发布一些示例代码以便对我有所帮助,或者如果您在我的代码中发现一些错误,请告诉我,因为我认为我做错了什么但没有得到它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多