2012-04-08 108 views
1

嗨我試圖使用KSOAP2 2.6.2 android程序集來連接到部署在glassfish 3.1.1上的java WebService。從我的android程序。 這裏是我的命名空間發送SOAP消息使用KSOAP2使用Android

public static final String SERVICE_NAMESPACE = "za.co.n7.mobilebackup"; 
public static final String SERVICE_URL = "http://ipaddress:8080/MobileBackupServiceImplService/MobileBackupServiceImpl/"; 

這裏是我的發送方法

final String METHOD_NAME = "Login"; 
    SoapObject results = null; 
    SoapObject request = null; 
    HttpTransportSE loginHttpTransport = null; 
    try { 
     request = new SoapObject(MBUtil.SERVICE_NAMESPACE, METHOD_NAME); 
     request.addProperty("username", username); 
     request.addProperty("password", MBUtil.hashPassword(password)); 

     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 
     envelope.bodyOut=request; 
     envelope.enc = SoapSerializationEnvelope.ENC; 
     envelope.env="http://schemas.xmlsoap.org/soap/envelope/"; 

     // Web method call 
     loginHttpTransport = new HttpTransportSE(MBUtil.SERVICE_URL); 
     loginHttpTransport.debug = true; 
     loginHttpTransport.call(MBUtil.SERVICE_URL + METHOD_NAME, envelope); 

     results = (SoapObject) envelope.getResponse(); 

     System.out.println("Received Result without issue"); 

    } catch (Exception e) { 
     e.printStackTrace(); 
     System.out.println(loginHttpTransport.requestDump); 
     System.out.println(loginHttpTransport.responseDump); 
    } finally { 
     finish(); 
    } 

而且我湊了DDMS的logcat下面的錯誤。

04-08 15:30:42.508: W/System.err(1454): org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT [email protected]:0 in [email protected]) 
04-08 15:30:42.508: W/System.err(1454):  at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273) 
04-08 15:30:42.508: W/System.err(1454):  at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:1413) 
04-08 15:30:42.508: W/System.err(1454):  at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126) 
04-08 15:30:42.508: W/System.err(1454):  at org.ksoap2.transport.Transport.parseResponse(Transport.java:100) 
04-08 15:30:42.519: W/System.err(1454):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:195) 
04-08 15:30:42.519: W/System.err(1454):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95) 
04-08 15:30:42.519: W/System.err(1454):  at za.co.n7.mobilebackup.LoginActivity.connect(LoginActivity.java:149) 
04-08 15:30:42.519: W/System.err(1454):  at za.co.n7.mobilebackup.LoginActivity$DoLoginRequest.run(LoginActivity.java:116) 
04-08 15:30:42.519: W/System.err(1454):  at android.os.Handler.handleCallback(Handler.java:587) 
04-08 15:30:42.519: W/System.err(1454):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-08 15:30:42.519: W/System.err(1454):  at android.os.Looper.loop(Looper.java:123) 
04-08 15:30:42.519: W/System.err(1454):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-08 15:30:42.519: W/System.err(1454):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-08 15:30:42.519: W/System.err(1454):  at java.lang.reflect.Method.invoke(Method.java:507) 
04-08 15:30:42.519: W/System.err(1454):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-08 15:30:42.528: W/System.err(1454):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-08 15:30:42.528: W/System.err(1454):  at dalvik.system.NativeStart.main(Native Method) 

我抄我的SOAP消息,在soapUI的粘貼它,它得到的結果。任何人都可以幫助我,現在我已經掙扎了好幾個小時了。 這裏是我的SOAP消息的樣品

<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"> 
    <v:Header/> 
    <v:Body> 
     <n0:Login id="o0" c:root="1" xmlns:n0="za.co.n7.mobilebackup"> 
     <username i:type="d:string">umohduke</username> 
     <password i:type="d:string">c4066ed69b81d6b2b25f76405195c83ddaeecd8dbd3866f17912b895a72bc059</password> 
     </n0:Login> 
    </v:Body> 
</v:Envelope> 

回答

1

我不知道,但嘗試這個辦法:

public static final String SERVICE_NAMESPACE = "http://za.co.n7.mobilebackup"; 

代替

public static final String SERVICE_NAMESPACE = "za.co.n7.mobilebackup"; 
+0

我試過不已,同樣的問題 – greenkode 2012-04-08 16:33:56

+0

是否使用'10.0.2.2' IP地址? – 2012-04-08 17:16:42

+0

不,我決定使用icesoap。那現在爲我工作。 – greenkode 2012-04-09 16:32:25

3

就試試這個方法:

使用Android將文件發送到Web服務器。

FileInputStream fileInputStream = null; 
try { 
    fileInputStream = new FileInputStream(image); 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

bitmap=BitmapFactory.decodeStream(fileInputStream); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
byte[] data = baos.toByteArray(); 
IMAGE= Base64.encodeBytes(data); 
Log.e("THE IMAGE BYTES",""+IMAGE); 

圖像是發送到Web服務器的字符串。

來源:aruljack's blog (mine)