2012-04-08 2 views
1

안녕하세요, KSOAP2 2.6.2 android 어셈블리를 사용하여 glassfish 3.1.1에 배포 된 Java WebService에 연결하려고합니다. 내 안드로이드 프로그램에서. 여기 여기에 내 보내기 SOAP 메시지 보내기 Android에서 KSOAP2 사용

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 로그 캣에서 다음과 같은 오류를 받고 있어요 내 네임 스페이스

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

있습니다.

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 = "za.co.n7.mobilebackup"; 
+0

나는 이미 같은 문제 – greenkode

+0

당신이'10.0.2.2' 같은 IP 주소를 사용하고 있는지 시도? –

+0

nope, nevermind 나는 icesoap을 사용하기로 결정했다. 그게 지금 나를 위해 일하고있어. – greenkode

3

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

를 그냥이 방법을 시도해보십시오

Android를 사용하여 웹 서버에 파일 보내기.

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

이미지는 웹 서버에 보낼 문자열입니다.

자료 : aruljack's blog (mine)