问题描述
比如接口是publicdelegatevoidHttpCallback(objectsender,objectdata);ClassHttpClientRequest{publicstaticvoidRequestA(stringid,objectsender,HttpCallbackcallback){}publicstaticvoidRequestB(stringid,objectsender,HttpCallbackcallback){}publicstaticvoidRequestC(stringid,objectsender,HttpCallbackcallback){}}ClassHttpHelper{sendRequest()}我现在想要RequestA,RequestB,RequestC被统一调用,结果为data请大神帮下忙
解决方案
解决方案二:
希望大家帮帮忙挺急的,另外委托和消息机制我也学的不太懂
解决方案三:
http://topic.csdn.net/u/20120528/17/8fc50d63-d913-4187-9354-da7310ec8efa.html回复下!!!!!!!!!!
解决方案四:
有没有伸出援手的啊
解决方案五:
建立一个参数和返回类型与HttpCallback一致的方法,用来处理结果,参数data就是返回的结果,三个Request方法里得到返回的结果之后就调用callback(sender,返回的结果);
HttpCallbackcallback=之前的方法;RequestA(id,sender,callback);RequestA(id,sender,callback);RequestA(id,sender,callback);
解决方案六:
引用4楼的回复:
建立一个参数和返回类型与HttpCallback一致的方法,用来处理结果,参数data就是返回的结果,三个Request方法里得到返回的结果之后就调用C#codecallback(sender,返回的结果);C#codeHttpCallbackcallback=之前的方法;RequestA(id,sender,callback);RequestA……
大哥能不能说的清楚点,不太明白
解决方案七:
急啊在线等.
解决方案八:
还是没人来帮啊急啊
解决方案九:
异步HTTP请将请求继承与IHttpAsyncHandler接口进行异步操作
解决方案十:
引用8楼的回复:
异步HTTP请将请求继承与IHttpAsyncHandler接口进行异步操作
老大能给出部分代码吗?
解决方案十一:
引用9楼的回复:
引用8楼的回复:异步HTTP请将请求继承与IHttpAsyncHandler接口进行异步操作老大能给出部分代码吗?
请问楼主的所谓的请求HTTP是web上的吧我说的IHttpAsyncHandler是一个异步请求普通的aspx或者ashx是继承于IHttpHandler的不知道楼主说的是哪一个
解决方案十二:
没人帮忙吗我惨了
解决方案十三:
引用10楼的回复:
引用9楼的回复:引用8楼的回复:异步HTTP请将请求继承与IHttpAsyncHandler接口进行异步操作老大能给出部分代码吗?请问楼主的所谓的请求HTTP是web上的吧我说的IHttpAsyncHandler是一个异步请求普通的aspx或者ashx是继承于IHttpHandler的不知道楼主说的是哪一个
是客户端请求服务器,比如上传下载等请求操作
解决方案十四:
还有你上面说的想要RequestA,RequestB,RequestC被统一调用这个意思我不是很明白是不是你想把不同的请求都暂时放在一个比如请求数组里但不返回是吗??然后之后有个操作将数组中的所有请求返回达到推的效果?比方说comet思想???
解决方案十五:
我要做一个统一请求的入口供别人调用进行http请求操作
解决方案:
引用13楼的回复:
还有你上面说的想要RequestA,RequestB,RequestC被统一调用这个意思我不是很明白是不是你想把不同的请求都暂时放在一个比如请求数组里但不返回是吗??然后之后有个操作将数组中的所有请求返回达到推的效果?比方说comet思想???
那个统一调用就先放放吧,我是觉得ABC返回和参数都一样,开始的时候我还想加个委托呢,到后来单个的我都想晕了,能否以其中一个请求操作帮我写出部分代码,我网上也找了好多例子都看不太明白
解决方案:
额客户端啊我还以为是服务器端呢那刚才我说的都是服务器端的异步请求关系不大...客户端的话我倒不是很熟悉既然是客户端楼主的统一调用的意思是不是多个不同请求最后返回httpResponse处理都调用一个委托方法???
解决方案:
我把整体过程说下,我写了个http请求类,就是问题中HttpHelper,这个类能实现上传下载功能(与服务器已连调成功)客户端怕有堵塞现在要求用异步请求需要对HttpHelper进行2次封装,HttpClientRequest这个类就是需要封装异步请求操作的但是委托回调我不会,不知该如何实现,接口部分是由别人提出的
解决方案:
引用16楼的回复:
额客户端啊我还以为是服务器端呢那刚才我说的都是服务器端的异步请求关系不大...客户端的话我倒不是很熟悉既然是客户端楼主的统一调用的意思是不是多个不同请求最后返回httpResponse处理都调用一个委托方法???
对,因为我看到请求的格式都一样的,关键里面那层回调返回的处理结果我都不会如何做,统一调用我更想的晕了
解决方案:
staticvoidMain(string[]args){//第一个请求HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create("http://www.google.com.hk/");MyResponse(()=>{returnrequest.GetResponse();});//第二个请求request=(HttpWebRequest)WebRequest.Create("http://www.yahoo.com/");MyResponse(()=>{returnrequest.GetResponse();});Console.ReadLine();}//你的共通方法publicstaticvoidMyResponse(Func<WebResponse>FunMethod){WebResponseresponse=FunMethod();Console.WriteLine(response.ResponseUri.AbsoluteUri);}
你运行下看看是不是你想要的结果擦难道我写复杂了?呵呵
解决方案:
我明白你的意思了publicstaticvoidRequestA(stringid,objectsender,HttpCallbackcallback){ThreadPool.QueueUserWorkItem(param=>{执行sendRequest()得到结果,假设为datacallback(sender,data);});}
调用RequestA后方法立即返回不会阻塞,等到sendRequest执行完了后调用HttpCallback接口将执行结果传入。
解决方案:
擦我写的不对别参照我的晕
解决方案:
引用19楼的回复:
C#codestaticvoidMain(string[]args){//第一个请求HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create("http://www.google.com.hk/");MyResp……
老大,关于请求部分是已经写好的,现在就是接口这部分我不会用回调啊,而且必须要按照接口这种方式实现啊
解决方案:
publicdelegatevoidHttpCallback(objectsender,objectdata);publicstaticvoidRequestA(stringid,objectsender,HttpCallbackcallback){}方法httpRequest是请求方法现在就是如何实现上面的回调
解决方案:
委托需要对应一个和它同参数列表和返回值的方法,RequestA的参数HttpCallbackcallback就填一个与HttpCallback对应的方法名。
解决方案:
引用24楼的回复:
委托需要对应一个和它同参数列表和返回值的方法,RequestA的参数HttpCallbackcallback就填一个与HttpCallback对应的方法名。
看来你快理解我了,能否写出来代码呢大哥,我是在有点晕了publicdelegatevoidHttpCallback(objectsender,objectdata);publicvoiddlgtCallback(objectsender,objectdata){}publicstaticvoidRequestA(stringid,objectsender,HttpCallbackcallback){//sendRequest()比如所有的请求都用这个方法,是我封装好的}然后怎么串联起来实现回调啊,我晕倒了
解决方案:
还要实现异步请求操作
解决方案:
有没有人帮忙啊啊啊
解决方案:
引用25楼的回复:
引用24楼的回复:委托需要对应一个和它同参数列表和返回值的方法,RequestA的参数HttpCallbackcallback就填一个与HttpCallback对应的方法名。看来你快理解我了,能否写出来代码呢大哥,我是在有点晕了publicdelegatevoidHttpCallback(objectsender,objectdata);……
调用的时候:HttpCallbackcallback=dlgtCallback;RequestA(你的id,你的sender,callback);
就这样。
解决方案:
完全异步就这样:publicdelegatevoidHttpCallback(objectsender,objectdata);publicvoiddlgtCallback(objectsender,objectdata){......}publicstaticvoidRequestA(stringid,objectsender,HttpCallbackcallback){ThreadPool.QueueUserWorkItem(param=>{执行sendRequest()得到结果,假设为datacallback(sender,data);});}
调用:HttpCallbackcallback=dlgtCallback;RequestA(你的id,你的sender,callback);
解决方案:
引用29楼的回复:
完全异步就这样:C#codepublicdelegatevoidHttpCallback(objectsender,objectdata);publicvoiddlgtCallback(objectsender,objectdata){......}publicstaticvoidRequestA(stringid,objectse……
好像没回调啊,结果只是返回data给UI那边进行处理,我不懂
解决方案:
引用29楼的回复:
完全异步就这样:C#codepublicdelegatevoidHttpCallback(objectsender,objectdata);publicvoiddlgtCallback(objectsender,objectdata){......}publicstaticvoidRequestA(stringid,objectse……
谢谢你的热心,再求大神光临啊
解决方案:
引用29楼的回复:
完全异步就这样:C#codepublicdelegatevoidHttpCallback(objectsender,objectdata);publicvoiddlgtCallback(objectsender,objectdata){......}publicstaticvoidRequestA(stringid,objectse……
我觉得这些异步请求的操作应该都是封装好的,只给客户端一个传入url,或者id的一个方法
解决方案:
引用30楼的回复:
引用29楼的回复:完全异步就这样:C#codepublicdelegatevoidHttpCallback(objectsender,objectdata);publicvoiddlgtCallback(objectsender,objectdata){......}publicstaticvoidRequestA(st……
回调的意思,RequestA把该处理的处理完了后,调用dlgtCallback这个方法,按我上面所写,在RequestA方法内部,执行完了sendRequest方法后得到一个data结果,callback(sender,data)把data传入,dlgtCallback的参数data就是执行sendRequest的结果,余下的就在dlgtCallback方法内部处理了。如果RequestA是下载文件,那调用RequestA后可以干别的事情,等到下载完了后,dlgtCallback就被调用,参数data就是下载完之后的结果,dlgtCallback内部就做下载完之后的事情。
解决方案:
引用33楼的回复:
引用30楼的回复:引用29楼的回复:完全异步就这样:C#codepublicdelegatevoidHttpCallback(objectsender,objectdata);publicvoiddlgtCallback(objectsender,objectdata){......}publicstatic……
我把类文件发给你能帮我看看吗?
解决方案:
引用34楼的回复:
引用33楼的回复:引用30楼的回复:引用29楼的回复:完全异步就这样:C#codepublicdelegatevoidHttpCallback(objectsender,objectdata);publicvoiddlgtCallback(objectsender,objectdata){......}……
发吧