2012-01-10 2 views
0

검은 딸기 개발에 새로운입니다. 그리고 웹 서비스를 사용하여 응용 프로그램을 개발하여 위치를 찾고 서버에 데이터를 전송하는 작업이 있습니다.블랙 베리에서 ksoap을 사용하여 응용 프로그램 개발

비누 요청에 대한 다음 코드를 개발했지만 모바일에 실행하면 아무 일도 일어나지 않습니다. 심지어 데이터도 서버로 전송되지 않습니다. 이 소스 코드에 대해 도움을 받고 가이드를 제공하십시오.

final class MyScreen extends SplashScreen { 

    private String serviceUrl = "myurl/GPStracker.asmx"; 
    private String serviceNamespace = "http://tempuri.org/"; 
    private String soapAction = "http://tempuri.org/GPSUnikeylogin"; 
    private String methodName = "GPSUnikeylogin"; 

    private String imei = GPRSInfo.imeiToString(GPRSInfo.getIMEI(), false); 

    private BasicEditField roundedBorderEdit = null; 
    private ButtonField bf; 
    private String responseBody; 
    Hashtable persistentHashtable; 
    PersistentObject persistentObject; 
    static final long KEY = 0x9df9f961bc6d6baL; 

    public MyScreen(Bitmap popup, int seconds) { 
      super(Bitmap.getBitmapResource("bg.png"), 5); 

       //persistentObject = PersistentStore.getPersistentObject(KEY); 
       roundedBorderEdit = new BasicEditField(); 
       roundedBorderEdit = new BasicEditField("","",50,EditField.EDITABLE | EditField.FILTER_NUMERIC | EditField.FIELD_HCENTER) { 
        public void paint(Graphics g) { 
         super.paint(g); 
         g.drawRect(0, 0, getWidth(), getHeight()); 
        } 
       }; 
       add(roundedBorderEdit); 

       bf = new ButtonField ("Register", Field.FOCUSABLE); 
       bf.setChangeListener(new FieldChangeListener(){ 
        public void fieldChanged(Field field, int context) { 

         callWebService(); 

        } 
       }); 
       add (bf); 

    } 
    private void callWebService() 
    { 
     String e = "123";//MyScreen.this.roundedBorderEdit.getText(); 
     //Dialog.alert(e.toString()); 

     SoapObject rpc = new SoapObject(serviceNamespace, methodName); 
     //Dialog.alert(rpc.toString()); 

     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

     rpc.addProperty("vUnikey",e.toString()); 
     rpc.addProperty("vImei_No",imei.toString()); 

     //Dialog.alert(rpc.toString()); 
     envelope.setOutputSoapObject(rpc); 
     envelope.bodyOut = rpc; 
     envelope.dotNet = true; 
     envelope.encodingStyle = SoapSerializationEnvelope.XSI; 

     HttpTransport ht = new HttpTransport(serviceUrl);//+ ";deviceside=true;apn=blackberry.net"); 

     Dialog.alert(ht.toString()); 

     //HttpTransport ht = new HttpTransport(serviceUrl); 
     ht.debug = true; 
     ht.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); 
     //Dialog.alert("set to xml"); 
     String result= null; 

     try{ 

      ht.call(soapAction, envelope); 
      Dialog.alert(ht.toString()); 
      result = (envelope.toString()); 
      Dialog.alert(result.toString()); 
     } 

     catch (org.xmlpull.v1.XmlPullParserException ex2) { 
     } 

     catch (Exception ex) { 
      String bah = ex.toString(); 
      System.out.println(bah); 
     } 
    } 
} 

위의 코드에서 ht.call (soapAction, envelope)까지 전화를 받고 있습니다. 그 후 나는 서버로부터 응답을 얻지 못하고있다. 또한 인터넷 액세스 및 장치에서 다른 액세스에 대한 권한을 부여하는 적절한 방법을 얻지 못합니다.

그래서 비누 봉투 덕분에 데이터를 업로드 할 수 있도록 도와주세요.

+0

oops. 별도의 스레드에서 네트워크 연결을하십시오. – rfsk2010

+0

@ rfsk2010 답장을 보내 주셔서 감사합니다. 제 코드의 어느 부분을 별도의 스레드에 보관해야합니까? –

답변

0

ksoap2-android 프로젝트를보고 싶을 수도 있습니다. 그 코드는 여전히 Java 1.3/Java ME 호환이며 블랙 베리 장치에서 잘 작동해야합니다 ..

관련 문제