Java BlackBerry java.io.IOException: не удалось передать - PullRequest
0 голосов
/ 22 декабря 2011

У меня проблема с подключением к серверу, на котором размещен мой веб-сервис, когда я развернул приложение на устройстве.Этот случай возникает, когда я использовал следующий параметр подключения:

}else if(TransportTypes[i]== TransportInfo.TRANSPORT_TCP_CELLULAR ){
             String carrierUid = getCarrierBIBSUid();
                if(carrierUid == null) {
                    ConnectionParameter = ";deviceside=true";
                }
                else{
                    **ConnectionParameter = ";deviceside=false;connectionUID="+carrierUid + ";ConnectionType=mds-public**";
                }  

            break;
        }


public static String getCarrierBIBSUid(){

    ServiceBook sb = ServiceBook.getSB();
    ServiceRecord[] records = sb.findRecordsByCid("WPTCP"); 
    String uid = null; 

    for(int i=0; i < records.length; i++) 
    {
        //Search through all service records to find the 
        //valid non-Wi-Fi and non-MMS 
        //WAP 2.0 Gateway Service Record.
        if (records[i].isValid() && !records[i].isDisabled()) 
        {

            if (records[i].getUid() != null && records[i].getUid().length() != 0) 
            {
                if ((records[i].getUid().toLowerCase().indexOf("wifi") == -1) &&
                    (records[i].getUid().toLowerCase().indexOf("mms") == -1))
                {
                        uid = records[i].getUid(); 
                        break;
                }
            } 
        }
    }
    return uid;

}

Все работало нормально на симуляторе.

Все работало также нормально как на устройстве, так и на симуляторе при использовании WiFi:

if(TransportTypes[i]== TransportInfo.TRANSPORT_TCP_WIFI ){
            ConnectionParameter = ";interface=wifi";
            break;
        }

или просто:

ConnectionParameter = ";interface=wifi";

У кого-нибудь есть подсказка, в чем может быть проблема с этим подходом?

1 Ответ

0 голосов
/ 21 марта 2012

Ну, я нашел способ обойти проблему.Хотя настройка APN все еще необходима для использования прямого канала TCP.Я последовательно проверял самый сильный доступный канал, прежде чем использовать один.

ниже приведен отрывок моего кода:

public static String getConnParams() {
    String ConnectionParameter ="" ;
    int TransportTypes[] = TransportInfo.getAvailableTransportTypes();
    int wifi=0;
    int wap2=0;
    int BIS=0;
    int MDS=0;
    for(int i=0; i<TransportTypes.length; i++){
        if(TransportTypes[i]== TransportInfo.TRANSPORT_TCP_WIFI ){
        wifi  = TransportInfo.TRANSPORT_TCP_WIFI ;
        }else if(TransportTypes[i]== TransportInfo.TRANSPORT_WAP2 ){
        wap2 =  TransportInfo.TRANSPORT_WAP2; 
        }else if(TransportTypes[i]== TransportInfo.TRANSPORT_BIS_B  ){
            BIS = TransportInfo.TRANSPORT_BIS_B;
        }else if(TransportTypes[i]== TransportInfo.TRANSPORT_MDS ){
            MDS = TransportInfo.TRANSPORT_MDS;
        }
    }

    if(wifi!=0 && TransportInfo.hasSufficientCoverage(wifi)){
        ConnectionParameter = ";interface=wifi";
        return ConnectionParameter;
    }else if(wap2 !=0 &&TransportInfo.hasSufficientCoverage(wap2)){
         String carrierUid = getCarrierBIBSUid();
        if(carrierUid == null) {
            ConnectionParameter = ";deviceside=true";
        }
        else{
            ConnectionParameter = ";deviceside=true;connectionUID="+carrierUid;
        } 
        return ConnectionParameter;
    }else if(BIS !=0 && TransportInfo.hasSufficientCoverage(BIS)){
        ConnectionParameter = ";deviceside=false";
        return ConnectionParameter;
    }else if(MDS !=0 && TransportInfo.hasSufficientCoverage(MDS)){
        ConnectionParameter = ";deviceside=false";
        return ConnectionParameter;
    }else{
        ConnectionParameter = ";deviceside=true";       
        return ConnectionParameter;
    }


}

Также вы действительно найдете следующую ссылку полезной:HTTP-соединение BlackBerry - учебное пособие

Спасибо всем за ваши предложения.

...