0

JavaプログラムのWebサービスから結果を取得しようとしています。私は以前にxmlサービスを実行しましたが、これはテキストベースであり、応答を記録する方法がわかりません。

これがwebServiceです:http ://ws.geonames.org/countryCode?lat = 47.03&lng = 10.2

ありがとう!

4

3 に答える 3

1

テキストのみで、標準形式(SOAPなど)を使用しない場合は、ソケットを使用する必要があります。

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

多くの行がある場合は、これを使用します。

while ((inputLine = in.readLine()) != null) 
   response.add(inputLine);

または、(質問のWebサービスのように)1行しかない場合はこれを使用します。

String countryCode = in.readLine();

そして、次のように終了します。

serviceConnection.close();

私の場合、countryCodeは「AT」でした

于 2012-07-10T19:12:29.603 に答える
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");
    }

}
于 2012-07-10T19:15:33.490 に答える
0

URLに加えて別の実装は、HttpClientを使用することです。

于 2012-07-10T19:18:01.323 に答える