WebClient问题,请大神帮忙看下

cometo2013 2017-03-25 08:51:45

webClient.UploadDataCompleted += callBackUploadDataCompleted;
webClient.UploadDataAsync(new Uri(url), "POST", sendData);


private void callBackUploadDataCompleted(object sender, UploadDataCompletedEventArgs e)
{
if (e.Error != null)
{
//此地方我想当错误的时候,把sendData也就是POST的内容加入到一个队列内,等稍后重新POST,但是这个sendData怎么取回来?
}
}
...全文
152 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cometo2013 2017-03-26
  • 打赏
  • 举报
回复
谢谢你俩,你俩的方法都不错,结贴
Forty2 2017-03-26
  • 打赏
  • 举报
回复
WebClient.UploadDataAsync不是有一个带userToken的重载吗?userToken将是你回调时的e.UserState。 webClient.UploadDataAsync(new Uri(url), "POST", sendData, userToken: sendData); https://msdn.microsoft.com/en-us/library/ms144227(v=vs.110).aspx public void UploadDataAsync( Uri address, string method, byte[] data, object userToken )
  • 打赏
  • 举报
回复
自己设计一个 class,用于封装 Data 和 方法,这就是相当于“从一过渡到二”的阶段,只有这样才体现出软件设计的意义。只会用事件语法形式,没意思!理解面向对象的封装,才有意思。
  • 打赏
  • 举报
回复
首先,你可以使用匿名委托方式,它可以使用“外部变量”。例如
WebClient webClient = null;
byte[] data = null;
webClient.UploadDataCompleted += (s, e) =>
{
    var len = data.Length;
};
如果你需要独自封装参数,那么应该自定义一个Session类型,用来保存会话信息。例如:
public class Session
{
    public byte[] Data;

    public void OnCompleted(object sender, UploadDataCompletedEventArgs e)
    {
        var len = this.Data.Length;
    }
}
WebClient webClient = null;
byte[] data = null;
var obj = new Session { Data = data};
webClient.UploadDataCompleted += obj.OnCompleted;
这实际上就是手动的方式,跟匿名委托的机制是一样的。
cometo2013 2017-03-26
  • 打赏
  • 举报
回复
引用 2 楼 cpycpy000 的回复:
假设 sentdata的数据类型是 object 那么就是 object sentdata = (object)e.UserState;;
那个sentdata我是 JSON转换为byte[]的,但是回调里面 e.UserState =null的,应该不是这个吧
cometo2013 2017-03-26
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
sender就是你调用的那个webclient,里面有
WebClient web = sender as WebClient; 找了半天没找到那个属性是,请指点一下
cpycpy000 2017-03-26
  • 打赏
  • 举报
回复
假设 sentdata的数据类型是 object 那么就是 object sentdata = (object)e.UserState;;
threenewbee 2017-03-25
  • 打赏
  • 举报
回复
sender就是你调用的那个webclient,里面有

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧