2012-07-10 3 views
0

자바 프로그램의 웹 서비스에서 결과를 얻으려고합니다. 전에 xml 서비스를했는데이 하나는 텍스트 기반이며 응답을 기록하는 방법을 알 수 없습니다. http://ws.geonames.org/countryCode?lat=47.03&lng=10.2txt 웹 서비스를 구문 분석하는 방법

감사 : 여기

는 웹 서비스입니다!

+0

어떤 구현을 REST 서비스에 사용하고 있습니까? 저지? – smcg

+0

일반적인 결과는 무엇이며 무엇을 얻고 싶습니까? – fdomig

+0

두 자로 된 국가 코드가 필요합니다. – nwnoga

답변

1

그것은 단지 텍스트, 그리고 당신은, 당신은 소켓 사용해야합니다 (SOAP 등) 표준 형식을 사용하지 않는 경우 :

while ((inputLine = in.readLine()) != null) 
    response.add(inputLine); 
: 당신이 많은 라인을 가지고이 경우

URL myURL = new URL("http://ws.geonames.org/countryCode?lat=47.03&lng=10.2"); 
URLConnection serviceConnection = myURL.openConnection(); 
BufferedReader in = new BufferedReader(new InputStreamReader(
           serviceConnection.getInputStream())); 

List<String> response =new ArrayList<String>(); 

사용

또는 당신이 (당신의 문제의 웹 서비스 등) ONLY ONE 라인이 있다면 이것을 사용

String countryCode = in.readLine(); 

을 그리고 마무리 : 내 경우

serviceConnection.close(); 

는 URL에 추가하여 대안 구현이 HttpClient를 사용하는 것입니다 그것은

+0

굉장합니다. 감사! – nwnoga

0
public class CountryCodeReader { 

    private String readAll(Reader rd) throws IOException { 
     StringBuilder sb = new StringBuilder(); 
     int cp; 
     while ((cp = rd.read()) != -1) { 
      sb.append((char) cp); 
     } 
     return sb.toString(); 
    } 

    public String readFromUrl(String url) throws IOException, JSONException { 
     InputStream is = new URL(url).openStream(); 
     try { 
      InputStreamReader is = new InputStreamReader(is, Charset.forName("UTF-8")) 
      BufferedReader rd = new BufferedReader(is); 

      return readAll(rd); 
     } finally { 
      is.close(); 
     } 
     return null; 
    } 

    public static void main(String[] argv) { 
     CountryCodeReader ccr = new CountryCodeReader(); 
     String cc = ccr.readFromUrl("http://ws.geonames.org/countryCode?lat=47.03&lng=10.2"); 
    } 

} 
관련 문제