关于委托回调 实现异步http请求

问题描述

比如接口是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){......}……

发吧

时间: 2024-09-08 06:24:44

关于委托回调 实现异步http请求的相关文章

使用委托实现同步回调与异步回调

使用委托可以执行的一项有用操作是实现回调.回调是传入函数的方法,在函数结束执行时调用该方法. 例如,有一个执行一系列数学操作的函数.在调用该函数时,也向其传递一个回调方法,从而在函数完成其计算工作时,调用回调方法,向用户通知计算结果.   同步回调    首先声明两个方法: AddTwoNumbers():接受两个整型实参以及一个类型委托 ResultCallback():接受一个字符串,并显示出来.代码如下: using System; using System.Collections.Gen

Android Asynchronous Http Client-Android异步网络请求客户端接口

1.简介Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-async-http这个库可以大大的简化操作,它是基于Apache's HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android  Handler message 机制传递信息. 2.特性(1)采用异步http请求,并通过匿名内部类处理回调结果

用Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案)

问题 前端小同学在做页面的时候,犯了个常见的错误:把多个Ajax请求顺序着写下来了,而后面的请求,对前面请求的返回结果,是有依赖的.如下面的代码所示: var someData; $.ajax({ url: '/prefix/entity1/action1', type: 'GET' , async: true, contentType: "application/json", success: function (resp) { //do something on response

Android最基本的异步网络请求框架

本篇文章我们来一起写一个最基本的Android异步网络请求框架,借此来了解下Android中网络请求的相关知识.由于个人水平有限,文中难免存在疏忽和谬误,希望大家可以指出,谢谢大家. 1. 同步网络请求 以HTTP的GET请求为例,我们来介绍一下Android中一个基本的同步请求框架的实现.直接贴代码: public class HttpUtils { public static byte[] get(String urlString) { HttpURLConnection urlConnec

iOS 异步网络请求 和 把 同步网络请求放在子线程有什么区别?

问题描述 iOS 异步网络请求 和 把 同步网络请求放在子线程有什么区别? iOS 异步网络请求 和 把 同步网络请求放在子线程有什么区别? 解决方案 那就是异步和同步的问题咯,,异步的话是不会等待请求完成能继续执行下面的程序,,而同步会等待请求的完成,在继续执行下面的 解决方案二: 同步放子线程效果跟异步达到的类似.只是一个是API原生支持,一个是你自己代码来实现 解决方案三: 同步放子线程效果跟异步达到的类似.只是一个是API原生支持,一个是你自己代码来实现 解决方案四: 同步放子线程效果跟

C#使用semaphore来管理异步下载请求的方法

  本文实例讲述了C#使用semaphore来管理异步下载请求的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 var semaphor = new Semaphore(50, 50); // We allow at most 50 threads for crawling var resultPins = new List<Pin>(); // Res

深入浅出: Java回调机制(异步)

什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道"就一个回调-".此时千万个草泥马飞奔而过(逃 哈哈,看着源码,享受着这种回调在代码上的作用,真是美哉.不妨总结总结. 一.什么是回调 回调,回调.要先有调用,才有调用者和被调用者之间的回调.所以在百度百科中是这样的: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步调用. 回调是一种特殊的调用,至于三种方式也有点不同. 1.同步回调,即阻塞,单向. 2.回调,即双向(类似自行车的两个齿轮)

android-关于Android在一次异步Http请求结果未返回,第二次又发起请求的问题

问题描述 关于Android在一次异步Http请求结果未返回,第二次又发起请求的问题 在一个项目的ListView中,有个查询条件的切换(比如按男女性别条件查出来职工的List).我遇到的情况是在下拉框选择男性查数据,但数据还未返回,我这时切换了下拉框的条件改为女性.但是返回的数据有时候会是男性职工的数据.我用的是http异步请求(xUtils的HttpUtils).不知道这么解决这个问题 解决方案 如何发起web请求,并返回请求的结果? 解决方案二: 可以自定义一个类继续RequestCall

详解Android的OkHttp包编写异步HTTP请求调用的方法_Android

OkHttp 除了支持常用的同步 HTTP 请求之外,还支持异步 HTTP 请求调用.在使用同步调用时,当前线程会被阻塞,直到 HTTP 请求完成.当同时发出多个 HTTP 请求时,同步调用的性能会比较差.这个时候通过异步调用可以提高整体的性能. 在通过 newCall 方法创建一个新的 Call 对象之后,不是通过 execute 方法来同步执行,而是通过 enqueue 方法来添加到执行队列中.在调用 enqueue 方法时需要提供一个 Callback 接口的实现.在 Callback 接