2011-12-22 4 views
0

デバイスをアプリケーションにデプロイしたときに、Webサービスをホストしているサーバーに接続する際に問題が発生しました。このインスタンスは、次の接続パラメータを使用したときに発生します。BlackBerry Java java.io.IOException:送信に失敗しました

}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; 

} 

すべてがシミュレータで正常に機能しました。

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

か、単に:

ConnectionParameter = ";interface=wifi"; 

いずれこのアプローチの問題かもしれないものの手掛かりを持って無線LANを使用するとき

すべては、デバイスとシミュレータの両方でうまく働きましたか?

+0

**に追加された行を参照していますか? – jprofitt

+0

ダイレクトtcpを使用します。あなたはapnの設定をしましたか? – rfsk2010

+0

はいRihan、それはTCPを使用しますが、APNを設定することは今私が持っている問題です。あなたは手掛かりを持っていますか? –

答えて

0

まあ、私は問題を回避する方法を見つけました。 TCPダイレクトチャネルを使用するにはAPNの設定が必要ですが、私は、使用する前に、利用可能な最も強いチャンネルを連続してチェックしました。以下

私のコードの抜粋です。

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; 
    } 


} 

だけでなく、あなたが本当に次のリンクが参考になります。 Creating a BlackBerry HTTP Connection – Tutorial

をご提案ありがとうございました。