2012-12-04 2 views
0

웹 서비스에 연결하는 데 문제가 있습니다. 필자는 튜토리얼 2 권 (특히 http://drclawx.wordpress.com/2011/06/24/77/)을 따라 간단한 Wcf Hello World 웹 서비스를 만들었습니다. 사이트에 추천 된 ksoap2 jar를 다운로드했지만 몇 가지 문제가있었습니다. 나중에 몇 가지 버전을 다운로드했지만 내가 사용할 수있는 버전은 2.5.8 버전입니다. 내 웹 서비스를 호출 할 때 XMLPullParserException이 발생합니다. 내 웹 서비스는 로그인 자격 증명을 확인하는 데 사용되며, 사용자 이름과 암호를 사용하는 'UploadLogin'메서드가 있습니다. 다음은 내 코드입니다wcf 웹 서비스를 호출 할 때 XMLPullParserException이 발생했습니다.

private class webService extends AsyncTask<String, Void, Void> { 

    final String METHOD_NAME = "UploadLogin"; 
    final String NAMESPACE = "http://tempuri.org/";  
    final String URL = "http://10.0.2.2:52762/UploadService.svc"; 
    final String SOAP_ACTION = "http://tempuri.org/IUploadService/UploadLogin"; 

    // For the web service method: public String getLocations(String inputLocation)) 
    @Override 
    protected Void doInBackground(String... entry) { 

     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
     request.addProperty("username", "a"); 
     request.addProperty("password", "a"); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

     envelope.dotNet = true; 
     envelope.setOutputSoapObject(request); 
     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

     try { 
      androidHttpTransport.call(SOAP_ACTION, envelope); 

      Object response = (Object) envelope.getResponse(); 
      System.out.println("Login - " + response.toString()); 
     } 
     catch (Exception exception) { 
      exception.printStackTrace(); 
     } 

     return null; 
    } 
} 

내가 받고있는 오류는 다음과 같습니다. 누군가이 문제를 해결하는 방법에 대해 도움을 주거나 제안 할 수 있습니까? messageEncoding은 MTOM을 사용했기 때문에 관심있는 사람들을위한

12-04 18:50:44.317: W/System.err(1704): org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT 
12-04 18:50:44.317: W/System.err(1704): --uuid:[email protected]:13 in [email protected]) 
12-04 18:50:44.326: W/System.err(1704):  at org.kxml2.io.KXmlParser.next(KXmlParser.java:426) 
12-04 18:50:44.336: W/System.err(1704):  at org.kxml2.io.KXmlParser.next(KXmlParser.java:310) 
12-04 18:50:44.336: W/System.err(1704):  at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:2029) 
12-04 18:50:44.346: W/System.err(1704):  at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126) 
12-04 18:50:44.356: W/System.err(1704):  at org.ksoap2.transport.Transport.parseResponse(Transport.java:96) 
12-04 18:50:44.356: W/System.err(1704):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:189) 
12-04 18:50:44.366: W/System.err(1704):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95) 
12-04 18:50:44.376: W/System.err(1704):  at prometric.myitemwriter.ViewItemBankActivity$ws_MIR.doInBackground(ViewItemBankActivity.java:538) 
12-04 18:50:44.376: W/System.err(1704):  at prometric.myitemwriter.ViewItemBankActivity$ws_MIR.doInBackground(ViewItemBankActivity.java:1) 
12-04 18:50:44.396: W/System.err(1704):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
12-04 18:50:44.426: W/System.err(1704):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
12-04 18:50:44.436: W/System.err(1704):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
12-04 18:50:44.516: W/System.err(1704):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
12-04 18:50:44.516: W/System.err(1704):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
12-04 18:50:44.526: W/System.err(1704):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
12-04 18:50:44.536: W/System.err(1704):  at java.lang.Thread.run(Thread.java:856) 

답변

0

, 나는이 오류가 발생 된 이유는, 그래서 나는 텍스트이 변화하고 그것은 작동 - messageEncoding = "텍스트"

+1

메시지 인코딩을 어떻게 설정합니까? 보여 주시겠습니까? – Sameer

+0

어디에서 메시지 인코딩을 설정 했습니까? 당신의 도움이 필요합니다. – NetStarter

+0

메시지 인코딩을 어떻게 설정합니까? 솔루션을 게시하시기 바랍니다 – FilipLuch

2
Instead of using kSOAP library, you can do it with built-in apache classes like HttpClient, HttpGet, HttpPost, etc. 

For example: You want to send below JSON object: 

{ 
    "email":"[email protected]", 
    "password":"test" 
} 
then you can set your request object by using setEntity(): 

final String body = String.format("{\"email\":\"%s\",\"password\":\"%s\"}", s1, s2); 

HttpClient client = new DefaultHttpClient(); 
HttpPost postMethod = new HttpPost(webServiceUrl); 
postMethod.setEntity(new StringEntity(body, "utf-8")); 
-1

에서 내 경우, 필요한 메서드 매개 변수가 부족하여 오류가 발생했습니다 :

request.addProperty("cpf", "111111111");