2013-05-08 3 views
1

Android에서 jax-ws 웹 서비스에 연결하는 중 문제가 있습니다 (ksoap2 사용).ksoap2 android incompatible xml

비슷한 문제를 찾으려고했지만 많은 것을 찾았지만 해결책이 전혀없는 것 같습니다.

내 웹 메서드 login은 두 개의 문자열을 취해 결과가 포함 된 다른 문자열을 출력합니다. (모든 데이터 유형/incompatability/속도 문제를 방지하려면, 우리는 웹 서비스와 문자열을 사용하기로 결정)

무엇 내 JAX-WS가 기대된다 (? 내에 따라 테스터 페이지)

<?xml version="1.0" encoding="UTF-8"?> 
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Header/> 
    <S:Body> 
     <ns2:login xmlns:ns2="http://jrpg.easj/"> 
      <username>foobar</username> 
      <password>pswd2</password> 
     </ns2:login> 
    </S:Body> 
</S:Envelope> 

은 무엇 ksoap2 뱉어 : (httpTransport.requestDump) 응답 심지어 올바른 로그인과, 항상 실패하는 것을 볼 수 있습니다에서

<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 xmlns:n0="http://jrpg.easj/"> 
      <n0:username i:type="d:string">foobar</n0:username> 
      <n0:password i:type="d:string">pswd2</n0:password> 
     </n0:login> 
    </v:Body> 
</v:Envelope> 

. 따라서 웹 서비스는 사용자 이름과 암호를 인식하지 않아야합니다 ... 그래서 이것은 xml 형식으로 인한 것이라고 가정해야합니다. 또는 문자 인코딩에 문제가있을 수 있지만 XML 형식 문제가 될 때까지 더 기울어 져 있습니다.

형식을 변경할 수있는 방법이 있습니까?
그리고 btw ... v :가 무엇인지 아는 사람이 있습니까?
나는 S가 비누 같은 것을 생각하고있다. 그러나 ... 잘 모르겠다. 그 중 어떤 것이 중요 할지도 모른다. ...

나는 지저귐을 따라 왔기 때문에, 많이있다. 코드의 일부와 그 중 일부는 아직 완전히 grokked하지 않은 ... 그리고이 질문에 대답을 위해, 편리한 것입니다 특정 부분이 있는지 모르겠습니다 ... 그래서 나는 그것을 짧게 유지하고 떠날 것이다 밖으로 자바 코드. 그러나 필요한 특정 코드가 있는지 알려주십시오.

다른 웹 응용 프로그램 (.net/vs, java/netbeans)을 동일한 웹 서비스에 연결했습니다. 그리고 그 과정은 항상 고통스럽지 않고 간단하여 누구나 할 수 있습니다 ... 그래서 안드로이드는 뒤죽박죽이고 어려워야합니다. 그래서 원인, 어떤 도움을 크게 주시면 감사하겠습니다.

답변

0

지금 해결책이 될 수도 있습니다. 튜토리얼은 매개 변수를 추가 할 때이 코드를 사용한다고 말했습니다.

PropertyInfo property = new PropertyInfo(); 
property.setNamespace(WS_NAMESPACE); 
property.setName("username"); 
property.setValue(username); 
request.addProperty(property); 

는 ...하지만 네임 스페이스 선없이 "N0는"매개 변수 앞에 사라지고 지금은 웹 방법에서 예상되는 결과를 얻을 수 있습니다.

PropertyInfo property = new PropertyInfo(); 
//property.setNamespace(WS_NAMESPACE); 
property.setName("username"); 
property.setValue(username); 
request.addProperty(property); 

ksoap 연결은 여전히 ​​많은 오류를 발생 시키지만 적어도 이제는 웹 메서드에서 적절한 결과를 얻을 수 있습니다. 그래서 시작입니다.