在做客户端应用时, 经常遇到联网, 需要获取远端服务的response, 在数据返回时通知给客户端,在此做下记录。
1. 建一个线程, 处理发送和接收
//仅供备忘 , 需要完善的还有连接数控制,流处理,请求附加码,连接百分比等
abstract class Http implements Runnable {
public boolean isDisconnect = false;
private Thread thread;
private HttpURLConnection httpUrlConnection;
private URL Url;
public Http http;
private int state;
//保存连接
private List<HttpURLConnection> connections;
private InputStream inputStream;
private ArrayList<HttpURLConnection> removeAble = null;
public Http() {
System.out.println("---->Http Constructor<---");
http = this;
connections = new ArrayList<HttpURLConnection>();
thread = new Thread(this);
thread.start();
}
@Override
public void run() {
String path = "";
while (!isDisconnect) {
try {
Thread.sleep(10);
int cnt = 1;
for (HttpURLConnection conn : connections) {
path = conn.getURL().toString();
System.out.println("正在连接第" + cnt + "个, " + path);
inputStream = conn.getInputStream();
if (inputStream != null) {
System.out.println("正在读取:" + path);
onHttp(inputStream, path, conn.getResponseCode());
inputStream.close();
inputStream = null;
if (removeAble == null) {
removeAble = new ArrayList<HttpURLConnection>();
}
removeAble.add(conn);
}
cnt++;
}
// remove
if (removeAble != null) {
for (HttpURLConnection conn : removeAble) {
popConnect(conn);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public boolean get(String url) {
try {
Url = new URL(url);
httpUrlConnection = (HttpURLConnection) Url.openConnection();
httpUrlConnection.setRequestMethod("GET");
httpUrlConnection.setDoOutput(true);
httpUrlConnection.setConnectTimeout(10 * 1000);
pushConnect(httpUrlConnection);
System.out.println(connections.size());
Url = null;
httpUrlConnection = null;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
public boolean post(String url, byte[] buff) {
return true;
}
private void pushConnect(HttpURLConnection http) {
// for (HttpURLConnection h : connections) {
// String h1 = null;
// String h2 = null;
// h1 = h.getURL().getPath();
// h2 = http.getURL().getPath();
// if (h1.equals(h2)) {
// return;
// }
// }
this.connections.add(http);
}
private void popConnect(HttpURLConnection obj) {
synchronized (this) {
connections.remove(obj);
}
}
public abstract void onHttp(InputStream inputStream, String url, int code);
}
class HttpClient extends Http{
@Override
public void onHttp(...){
//在此事件里处理返回的流
}
}
分享到:
相关推荐
- `controller`:回调处理控制器,处理HTTP请求。 - `model`:事件模型,定义各种事件的Java对象。 - `service`:业务逻辑层,实现具体的事件处理。 - `util`:工具类,如签名验证、JSON解析等辅助功能。 8. **...
webhookinbox, 在实时中,接收HTTP回调并查看数据 WebhookInbox作者:Justin Karneges justin@fanout.io,Katsuyuki Ohmuro harmony7@pex2.jp 。邮件列表:http://lists.fanout.io/mailma
总结来说,Java中实现HTTP POST和GET请求,特别是带回调的功能,涉及到网络编程的基本原理和Java的异步处理技术。了解这些知识点对于开发涉及网络通信的Java应用至关重要。通过自定义类和使用Java 8的特性,我们可以...
当微信企业号接收到特定事件(如用户关注、取消关注、消息发送等)时,会根据开发者设置的回调URL,向该地址发送一个HTTP请求,携带相关的事件数据。开发者需要在服务器端接收这个请求,处理数据并返回适当的响应。...
如果您正在开发进行HTTP回调的服务,则WebhookInbox可以用作检查发送内容的便捷方法。 传入请求数据会实时显示在WebhookInbox网站上。 还有一个REST API可用,这意味着WebhookInbox可以以编程方式使用,例如希望...
例如,在JavaScript中,我们可以使用Ajax来发送一个HTTP请求,并提供一个回调函数来处理响应数据: ```javascript function sendRequest(url, callback) { var xhr = new XMLHttpRequest(); xhr....
- 微信企业号回调模式是一种基于HTTP/HTTPS协议的安全机制,用于确保微信服务器发送的消息只能被正确配置的回调URL接收。 - 在回调模式下,微信服务器在接收到企业号应用的请求后,会向设置的回调URL发送一个带有...
在Android开发中,回调函数是一种常见的编程模式,用于处理异步操作的结果或者在...通过阅读提供的博客文章(http://blog.csdn.net/iblue007/article/details/48804331),可以更深入地学习和实践Android回调的使用。
在Android开发中,接口回调是一种常见的通信机制,用于在组件之间传递信息,特别是在异步操作中,如网络请求、文件读写等。接口回调能够帮助我们处理这些操作的结果,使得程序更加灵活和响应式。本篇文章将深入讲解...
4. **回调函数(Callback Functions)**:在异步请求中,我们通常需要定义回调函数来处理服务器的响应。对于`fetch`,可以使用`.then`和`.catch`来处理成功的响应和错误。对于`XMLHttpRequest`,可以监听`...
1. **回调接口的基本结构**:微信企业号的回调接口通常基于HTTP或HTTPS协议,采用JSON格式传递数据。企业需要在微信企业号后台配置回调URL,这个URL就是微信服务器发送事件通知的地方。同时,为了保证数据的安全性,...
可以使用Spring MVC的`@RequestMapping`注解来定义处理回调的HTTP方法。 ```java @RestController public class WeChatPayCallbackController { @PostMapping("/wechat/pay/callback") public String ...
在移动应用开发中,"移动demo处理回调"是一个关键的概念,尤其在涉及到网络请求和数据交互时。这里的“回调”通常指的是异步编程中的回调函数,它是处理网络操作(如AJAX)完成后的响应的一种机制。AJAX,即...
5. **回调机制**:在OSS文件上传过程中,可以通过设置回调URL,在文件上传成功后,OSS会发起一个HTTP请求到这个URL,开发者可以在此处理如更新数据库记录、发送通知等任务。 6. **生成二维码**:在获取到OSS返回的...
3. **接收回调**:天翼短信服务在成功发送验证码后,会向你提供的回调URL发送一个HTTP请求,这个请求携带验证码和唯一标识等信息。 4. **处理回调数据**:在你的服务器端,你需要编写代码来处理这个回调请求,从...
支付完成后,支付宝会将结果通过HTTP POST方式发送到预先设置的回调URL。此时,我们需要验证回调数据的完整性与合法性。验签的过程大致如下: 1. 从请求中提取支付宝返回的签名`sign`和签名类型`sign_type`。 2. ...
3. 网络请求:发送HTTP请求获取数据,一旦数据到达,回调函数会被调用来处理响应。 4. 时间间隔:使用`setTimeout`或`setInterval`时,指定的函数会在延迟后或定期被回调执行。 在JavaScript中,回调函数最常见的...
`asynchttpclient`库是实现这一功能的一个选择,它允许开发者通过回调函数来处理HTTP请求的响应,从而提高程序的执行效率。下面将详细解释异步HTTP客户端的基本概念、工作原理以及如何在Golang中使用回调函数。 **...
4. **微信支付回调(notify_url)**:当用户完成支付后,微信服务器会通过指定的回调URL向商户服务器发送异步通知,告知支付结果。Demo包含了处理这些回调事件的代码,通常包括验证签名、确认订单状态、更新数据库等...