android中的长轮询阻塞端口80

时间:2013-12-26 12:11:40

标签: android jax-ws ksoap2 long-polling

我正在使用像ksoap这样的长轮询技术:

HttpTransportSE getMessagesTransport = new HttpTransportSE(URL, 60000);
getMessagesTransport.call(SOAP_ACTION, envelope);

如果我只有一次同时调用 Web服务,它工作正常。 ,但如果我在请求另一个Web服务时调用另一个Web服务,在另一个结束之前不会调用

似乎端口80在Android客户端中被阻止,只允许向 domain:port (domain:80)

提出一个请求

有没有办法增加连接数

(我preafear不使用Comet arquitechture或Asyn WebServices)。

谢谢!

2 个答案:

答案 0 :(得分:0)

问题是我正在调用2个异步任务,如果android> = HONEYCOMB的版本你必须在线程池中执行异步任务,因为一个锁定到其他任务:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        new SendMessageToEventAsync(this, formattedMessageToSend)
                .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");
    } else {
        new SendMessageToEventAsync(this, formattedMessageToSend)
                .execute("");

答案 1 :(得分:0)

我创建了一个通用类,忘了我们的版本。当我们创建AsyncTask时,我们总是扩展AsyncTaskThreadPool。希望它能帮到你!

public abstract class AsyncTaskThreadPool<T1, T2, T3> extends AsyncTask<T1, T2, T3> {

    public void ExecuteThreadPool(T1 param)
    {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            this.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, param);
        } else {
            this.execute(param);
        }
    }

    protected abstract T3 doInBackground(T1... params);


}