我对Java很新,所以对某些人来说这似乎是显而易见的.我在ActionScript上做了很多工作,这是基于事件的,我很喜欢.我最近尝试编写了一小部分执行POST请求的Java代码,但我遇到了一个问题,即它是一个同步请求,因此代码执行会等待请求完成,超时或出现错误.
如何创建异步请求,代码继续执行,并在HTTP请求完成时调用回调?我瞥了一眼线程,但我认为这太过分了.
我正在编写一个验证外部Web服务器上的登录凭据的应用程序 - 所以我有一个基本的问题:创建一个登录屏幕,当提交时会在后台向服务器发送HTTP请求而不会导致UI挂起 - 同时提供对用户的ProgressDialog.
我的问题在于,我想编写一个扩展AsyncTask的通用HTTP Request类,所以当我调用时,.execute()
我将传递String参数,这些参数可能包含类似'post'的内容,并且在doInBackground
调用时会看到'post'字符串和然后将这些参数转发到我班级的相应电话中.伪代码就像是
public class HTTPOperations extends AsyncTask<String, Void, String>
{
doInBackground(String... string1,additionalParams)
{
if string1.equals "post"
response = httpPost(additionalParams)
return response;
}
httpPost(params)
{
// do http post request
}
}
Run Code Online (Sandbox Code Playgroud)
这是我能想到的,除了为我希望制作的每个HTTP Post/GET等请求创建一个类并扩展ASyncTask ...
这导致我的下一个问题,如果HTTP POST成功并返回一个身份验证令牌,我该如何访问此令牌?
因为新的httpOperations.execute(),不会从doInBackground返回字符串,而是返回值类型
对不起,如果这没有意义,我根本无法解决这个问题.如果需要,请索取详细说明.AsyncTask设计模式和想法受到了极大的欢迎.
我正在研究CF.NET的一个小技术框架,我的问题是,我应该如何编写异步部分?在MSDN上阅读很多内容但对我来说并不清楚.
所以,这是代码:
public class A
{
public IAsyncResult BeginExecute(AsyncCallback callback)
{
// What should I put here ?
}
public void EndExecute()
{
// What should I put here ?
}
public void Execute()
{
Thread.Sleep(1000 * 10);
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助我......
谢谢 !