UWP推送通知后台任务httpClient无法正常工作 [英] UWP Push Notifaction Background Task httpClient is not working

查看:109
本文介绍了UWP推送通知后台任务httpClient无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我们正在使用UWP Raw推送通知后台任务从服务器下载内容。

We are Using UWP Raw Push Notification Background Task to download the Content from server.

我们是能够显示RAW Toast Notifaction。

We are able to display the RAW Toast Notifaction.

但是当我们尝试从服务器下载数据时。

But when we try to download the data from server.

在从服务器获取响应之前,后台任务是退出(仅需3到4秒)。

Before Getting response from the server the Background task is Exits(In just 3 to 4 sec).

您能否建议我们如何使用从服务器下载数据。

Can You Please suggest How can we use to download the data from server.

    httpClient.DefaultRequestHeaders.Add(" User-Agent",String.Format(" IV_WP_ {0}",Constants.APP_VER));

                        var json = this.ToJson();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var values = new Dictionary< string,string>();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; values.Add(" data",this.ToJson());

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var content = new HttpFormUrlEncodedContent(values);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Debug.WriteLine(json.ToString());

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //httpRequest.Content = content; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;   

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; sendRequestOperation =  httpClient.PostAsync(new Uri(Constants.API_HOST),content); &NBSP; &NBSP; &NBSP; //后台任务在此行之后退出。 &NBSP; &NBSP; &NBSP; &NBSP;
  &NBSP; &NBSP;   

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; sendRequestOperation.Completed + = OnSendRequestCompleted;

   httpClient.DefaultRequestHeaders.Add("User-Agent", String.Format("IV_WP_{0}", Constants.APP_VER));
                        var json = this.ToJson();
                        var values = new Dictionary<string, string>();
                        values.Add("data", this.ToJson());
                        var content = new HttpFormUrlEncodedContent(values);
                        Debug.WriteLine(json.ToString());
                        //httpRequest.Content = content;                   
                        sendRequestOperation =  httpClient.PostAsync(new Uri(Constants.API_HOST), content);       //Background Task exits after this line.                 
                        sendRequestOperation.Completed += OnSendRequestCompleted;

On  OnSendRequestCompleted永远不会被调用。

On OnSendRequestCompleted is never Called.

可以任何一个如何帮助。我们如何使用httpClient下载小数据。

Can any one help .How can we use the httpClient to download small data.

谢谢和Reagrds

Thanks and Reagrds

Ramesh Kumar

Ramesh Kumar

推荐答案

您好RAMESHKUMAR SWANKARI,

Hi RAMESHKUMAR SWANKARI,

我们可以将await表达式用于  HttpClient.PostAsync方法。然后我们就可以得到HttpClient的状态。

We can use the await expression to the HttpClient.PostAsync method. And then we can get the state of the HttpClient.

例如:

private HttpClient httpClient;
private CancellationTokenSource cts;
private void OnProgress(IBackgroundTaskRegistration task, BackgroundTaskProgressEventArgs args)
{
    string u = "http://localhost/HttpClientSample/default.aspx";
    var myuir = new Uri(u);
    string str = "hello";
    var b = new HttpStringContent(str);
        var ignored = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
        {
            try
            {
                Windows.Web.Http.HttpResponseMessage response = await httpClient.PostAsync(myuir, b).AsTask(cts.Token);
            }
            catch (TaskCanceledException)
            {
            }
            catch (Exception ex)
            {
            }
            finally
            {
            }
    });
}

最好的问候,

Jayden Gu

Jayden Gu


这篇关于UWP推送通知后台任务httpClient无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆