【问题标题】:Return value of UploadStringAsync().?UploadStringAsync() 的返回值。?
【发布时间】:2013-12-04 11:49:04
【问题描述】:

我的问题是对还是错我不知道,但我想知道是否可以使用 WebClient 返回 post 方法的 UploadStringAsync() 的值?

    string serviceURL = REST_URI + servicePath;
    Uri URI = new Uri(serviceURL);
    System.Net.WebClient webClient = new WebClient();
    webClient.Headers["ContentType"] = "application/json";
    webClient.Headers["Accept"] = "application/json";
    webClient.UploadStringCompleted += this.sendPostCompleted;
    webClient.UploadStringAsync(URI, HTTP_POST, result);
    return ??;

如果我们可以返回UploadStringAsync(URI, HTTP_POST, result); 的值,请告诉我?

【问题讨论】:

    标签: c# .net windows-phone return webclient


    【解决方案1】:

    您可以使用UploadStringCompleted 事件并在事件处理程序中获取结果。一旦上传完成(失败或成功)事件就会引发。

    附加

    client.UploadStringCompleted 
                   += new UploadStringCompletedEventHandler (UploadStringCallback2);
    

    用途:

    void UploadStringCallback2(object sender, UploadStringCompletedEventArgs e)
    {
    //e.Result use it
    }
    

    如果您想返回上传结果,您可以等待事件被引发,例如here 使用AutoResetEvent

    【讨论】:

    • 我得到了结果..我需要从结果列表中提取特定的数据示例:id..
    【解决方案2】:

    从 .NET 4.5 开始,我们可以使用UploadStringTaskAsync 直接检索返回值。

    string rspBody = await client.UploadStringTaskAsync(uri, "POST");
    

    参考:MSDN

    【讨论】:

      【解决方案3】:

      该函数没有任何返回值。您已经为UploadStringCompleted 设置了事件处理程序,您可以在处理程序中获取操作的结果。

      这是签名:

      public delegate void UploadStringCompletedEventHandler(
          Object sender,
          UploadStringCompletedEventArgs e
      )
      

      第二个参数有你需要的信息:UploadStringCompletedEventArgsResult 属性包含服务器的响应。

      【讨论】:

      • 我得到了结果..我需要从结果列表中提取特定的数据示例:id..
      猜你喜欢
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 2013-04-08
      相关资源
      最近更新 更多