2013-08-14 4 views
0

내가이 WSDL 파일의 서비스를 사용하기 위해 여러분의 도움이 필요합니다 자바 환경에서 ksoap2 사용하여 WSDL 파일에서 서비스를 소비 : http://lyrics.wikia.com/server.php?wsdl

예를 들어, 서비스 매개 변수를 "getArtist" "아티스트 = U2"

나는이 자바 코드 개발 :

public class Constante { 
    public static final String SOAP_ACTION = "LyricWiki#getArtist"; 
    public static final String METHOD_NAME = "getArtist"; 
    public static final String NAMESPACE = "LyricWiki"; 
    public static final String URL = "http://lyrics.wikia.com/server.php"; 
    public static final String KEY_ARTIST = "artist"; 

} 

import java.io.IOException; 
import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.PropertyInfo; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 
import org.xmlpull.v1.XmlPullParserException; 

public class TestWSDL { 
public static void run() { 
SoapObject soapclient = new SoapObject(Constante.NAMESPACE, Constante.METHOD_NAME); 
// Yes you need this one in order to send the whole string or else only 
// the first letter 
// is going to be send 
SoapObject parameters = new SoapObject(Constante.NAMESPACE, Constante.METHOD_NAME); 
parameters.addProperty(Constante.KEY_ARTIST, "U2"); 
soapclient.addProperty(Constante.METHOD_NAME, parameters); 

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.setOutputSoapObject(soapclient); 
HttpTransportSE httpTransportSE = new HttpTransportSE(Constante.URL); 
try { 
httpTransportSE.call(Constante.SOAP_ACTION, envelope); 
Object result = envelope.getResponse(); 
System.out.println(result); 

} catch (IOException e) { 
e.printStackTrace(); 
} catch (XmlPullParserException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
} 
public static void main(String[] args) { 
run(); 
} 
} 

을 그리고있어 :

org.xmlpull.v1.XmlPullParserException을 : U를 nterminated entity ref (위치 : TEXT?

내 문제는 "Constante"클래스에 있다고 생각하지만 사용하기에 적합한 형식을 알지 못합니다.

어떤 조언이나 코드 솔루션은 나를 위해 좋은 것, 당신의 도움과 시간

답변

0

내가 chartlyrics를 사용하여 테스트하고 내가 지금 가사, 있어 사전에

감사합니다, 나는 당신이 내 코드 공유 :

public class Constante { 
    public static final String SOAP_ACTION = "http://api.chartlyrics.com/SearchLyricDirect"; 
    public static final String METHOD_NAME = "SearchLyricDirect"; 
    public static final String NAMESPACE = "http://api.chartlyrics.com/"; 
    public static final String URL = "http://api.chartlyrics.com/apiv1.asmx"; 
    public static final String KEY_ARTIST = "artist"; 
    public static final String KEY_SONG = "song"; 
} 

import java.io.IOException; 

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.SoapFault; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 
import org.xmlpull.v1.XmlPullParserException; 

public class TestWSDL { 

    public static void run2() throws SoapFault { 
     SoapObject request = new SoapObject(Constante.NAMESPACE, 
       Constante.METHOD_NAME); 
     request.addProperty(Constante.KEY_ARTIST, "U2"); 
     request.addProperty(Constante.KEY_SONG, "One"); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.setOutputSoapObject(request); 
     HttpTransportSE androidHttpTransport = new HttpTransportSE(
       Constante.URL); 
     try { 
      // call the web service method 
      androidHttpTransport.call(Constante.SOAP_ACTION, envelope); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     }// Next task is to get Response and format that response 
     SoapObject obj; 
     obj = (SoapObject) envelope.getResponse(); 

//  System.out.println(obj); 

     System.out.println(obj.getProperty("TrackId")); 
     System.out.println(obj.getProperty("LyricChecksum")); 
     System.out.println(obj.getProperty("LyricId")); 
     System.out.println(obj.getProperty("LyricSong")); 
     System.out.println(obj.getProperty("LyricArtist")); 
     System.out.println(obj.getProperty("LyricUrl")); 
     System.out.println(obj.getProperty("LyricCovertArtUrl")); 
     System.out.println(obj.getProperty("LyricRank")); 
     System.out.println(obj.getProperty("LyricCorrectUrl")); 
     System.out.println(obj.getProperty("Lyric")); 

    } 

    public static void main(String[] args) { 
     try { 
      run2(); 
     } catch (SoapFault e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

LyricWiki soap api를 사용하고 싶습니다.

감사합니다.