java 调用支付接口为什么java异步调用接口

在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
没有JAVA基础,初学android开发,想法是这个样子的:有很多模块需要重复用到获取HTTP的数据,所以就做成了一个函数在需要的时候调用,但由于HTTP是异步的不能立刻获取到数据并执行A端代码,请教如何解决?
A是一段执行函数代码
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
public void onClick(View view) {
http_post("网址");
//如何获取到异步的数据并进行下一步的数据处理操作?
B代码是一个函数
//通过HTTP(AsyncHttpClient)获取服务端的的数据(B代码有删节)
public static void http_post(String URL) {
client.post(url, params, new AsyncHttpResponseHandler() {
public void onSuccess(int statusCode,String response) {
if (statusCode == 200) {
//在这里如何将数据返回到A的代码?
public void onFailure(Throwable e) {
冒昧邀请了几位大大,劳烦百忙之余给小弟解答一下。。。谢谢。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
volley框架 你值得拥有!
当然也可以自己写接口回调!
public doI
public interface doInterface{
void onSucceed();
void onError();
public void doSomethingListenner(doInterface di){
http.post(Error error){
if(error==null){
di.onSucceed();
di.onError();
//使用接口
public void setData(){
doSomethingListenner(new doInterface(){
void onSucceed(){
void onError(){
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
谢邀,然而不懂android……不过类似js的ajax请求一样,你可以传一个callback函数进去,或者用消息-订阅机制,或者用监听模式。
假设是callback函数,可以如下:
public interface DoSomethingAfterPost {
void doSomthing(String data);//返回类型和传什么参数进去由你的业务决定
public static void http_post(String URL, DoSomethingAfterPost callback) {
client.post(url, params, new AsyncHttpResponseHandler() {
public void onSuccess(int statusCode,String response) {
if (statusCode == 200) {
//在这里如何将数据返回到A的代码?
callback(response);
public void onFailure(Throwable e) {
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:Java 异步编程最佳实践 - ImportNew
什么是异步?为什么要用它?
异步编程提供了一个非阻塞的,事件驱动的编程模型。 这种编程模型利用系统中多核执行任务来提供并行,因此提供了应用的吞吐率。此处吞吐率是指在单位时间内所做任务的数量。 在这种编程方式下, 一个工作单元将独立于主应用线程而执行, 并且会将它的状态通知调用线程:成功,处理中或者失败。
我们需要异步来消除阻塞模型。其实异步编程模型可以使用同样的线程来处理多个请求, 这些请求不会阻塞这个线程。想象一个应用正在使用的线程正在执行任务, 然后等待任务完成才进行下一步。 log框架就是一个很好的例子:典型地你想将异常和错误日志记录到一个目标中, 比如文件,数据库或者其它类似地方。你不会让你的程序等待日志写完才执行,否则程序的响应就会受到影响。 相反,如果对log框架的调用是异步地,应用就可以并发执行其它任务而无需等待。这是一个非阻塞执行的例子。
为了在Java中实现异步,你需要使用Future 和 FutureTask, 它们位于java.util.concurrent包下. Future是一个接口而FutureTask是它的一个实现类。实际上,如果在你的代码中使用Future, 你的异步任务会立即执行, 并且调用线程可以得到结果promise。
下面的代码片段定义了一个包含两个方法的接口。 一个是同步方法,另外一个是异步方法。
import java.util.concurrent.F
public interface IDataManager {
// synchronous method
public String getDataSynchronously();
// asynchronous method
public Future&String& getDataAsynchronously();
值得注意的是回调模型的弊端就是当回调嵌套时很麻烦。
该做和不该做的
为了方便测试, 你应该在代码中将功能从多线程中隔离出来。当在Java中编写异步代码时,你应该遵循异步模型,这样调用线程就不会被阻塞。
注意构造函数不能是异步的,你不应该在构造函数中调用异步方法。当任务互相不依赖时异步方式尤其有用。当调用任务依赖被调用任务时不应该使用异步(译者按:这对异步来说无意义,因为业务上调用线程被阻塞了).
你应该在异步方法中处理异常. 你不应该为长时间的task实现异常. 一个长时间运行的任务,如果异步执行的话, 可能会比同步执行耗费更长的时间, 因为运行时要为异步执行的方法执行线程上下文的切换, 线程状态的存储等. 你也应该注意同步的异常和异步的异常有所不同。 同步异常暗示 每次程序执行到那个程序特殊状态时就会抛出异常;异步异常的跟踪则困难的多。所以同步和异步异常暗示同步或异步代码可能抛出异常(synchronous and asynchronous exceptions imply synchronous or asynchronous code in your program that might raise exceptions.)。
异步对于设计大规模快速响应的应用是至关重要的。异步回调模型带来了很多的好处;你可以依赖你的异步回调方法来执行昂贵的I/O操作而你的处理器可以执行其它任务。然而虽然在Java和C#中提供了异步的支持,异步编程并不总是那么容易实现。异步方式的使用要谨慎: 你应该清楚什么时候可以用和什么时候不该用。
本文中我们介绍了异步编程的概念, 以及使用Java编程需要怎么去实现. 本文也列出了使用异步编程的最佳实践。谢谢阅读。
译者增加的内容
Java 7中提供了Fork/Join框架, 可以将一个大的task分割成很多可以并行执行的小task。Java 8中parallelStream内部利用Fork/Join执行并发操作。
提供了异步和基于事件编程框架, Java中对应的是Netflix的,你可以使用它实现CQRS和Event Sourcing模式。
提供了一个分布式的,容错的,事件驱动的框架, 可以实现异步的分布式的编程。
还有Spring的也提供了高性能的事件驱动的异步框架。
像Node.js天生支持异步编程模式, 其它语言如golang使用 goroutines 和 channels.也很容易实现异步。
可能感兴趣的文章
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
新浪微博:
推荐微信号
反馈建议:@
广告与商务合作QQ:
– 好的话题、有启发的回复、值得信赖的圈子
– 写了文章?看干货?去头条!
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 活跃 & 专业的翻译小组
– 国内外的精选博客文章
– UI,网页,交互和用户体验
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
& 2017 ImportNew查看:2141|回复:2
我正在用Java做一个商城对接银联的“网付通”支付接口的活!以前没做过这种类似活,请问我的这个支付对接程序是放在商城的项目里还是另建一个工程把它作为商城和网付通的中间层好呢?请教下做过类似项目的同行说说你们的做法!!!做过支付宝、财付通支付接口对接经验也麻烦说说呗!!!先谢谢各位愿意分享经验的兄弟姐妹了!
初贴奖励!
本帖最后由 IT妖姬 于
12:47 编辑
初级工程师
做对接是很简单的,一般对接方(例如:支付宝、易宝、快钱等等)都会给你对接文档的,虽然每家公司的对接流程不一样,不过大体内容都是包括一些数据加密、请求验证、请求回调以及服务器实时异步回调等等。涉及到的加密一般都是Mac,SHA,MD5等等。关键是按照人家的对接文档来操作,一般会分为测试环境和开发环境,当然也有像支付宝啃爹的没有测试环境的。不难的,按照文档来操作,就很easy的
热心广援!
引用:原帖由 java程序冥 于
11:08 发表
做对接是很简单的,一般对接方(例如:支付宝、易宝、快钱等等)都会给你对接文档的,虽然每家公司的对接流程不一样,不过大体内容都是包括一些数据加密、请求验证、请求回调以及服务器实时异步回调等等。涉及到的加密一般都是Ma ... 谢谢了!软件模块中存在一定接口,从调用方式上分为三类
1、同步调用;2、回调;3、异步调用
首先,同步调用是一种阻塞式调用,调用方要等待对象执行完毕才返回。它是一种单向调用。
其次,回调是一种双向调用模式,也就是说,被调用方在接口被调用得同时会调用对方得接口。
最后,异步调用是一种类似消息或者事件的机制,不过它的调用方向刚好相反,接口的服务在收到被调用的信息或事件时,会主动调用(调用方)的接口。
回调和异步调用得关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。
对于不同类型的语言(结构化语言和对象语言)、平台(win32,jdk)等,客户和服务的交互除了同步方式以外,都需要具备一定的异步通知机制,让服务方或接口提供方,在某些情况下能主动通知客户,而回调是实现异步的一个最简捷的途径。
结构化语言中,可以通过回调函数还实现回调,回调函数也是一个函数或过程,不过它是一个由调用方自己实现,供被调用方使用的特殊函数。
在面向对象语言中,回调则是通过接口或抽象类来实现的,我们把实现这种接口的类称为回调类,回调类的对象称为回调对象。对于象C++或objectPascal这些兼容了过程特性的对象语言,不仅提供了回调对象、回调方法等特性,也行兼容过程语言的回调函数机制。
阅读(...) 评论() &8795人阅读
学习-网络传输(13)
调用第三方支付接口参考:
http://blog.csdn.net/saindy5828/article/details/6800331
一般情况下,各个支付平台都会给我们一个示范的例子,只需按照要求更改后即可。
比如:支付宝https://docs./api
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:589811次
积分:10195
积分:10195
排名:第1787名
原创:407篇
转载:70篇
译文:35篇
评论:65条
(5)(13)(12)(37)(5)(19)(8)(8)(7)(8)(11)(14)(11)(29)(32)(30)(51)(9)(2)(30)(10)(17)(15)(32)(17)(45)(33)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 java调用restful接口 的文章

 

随机推荐