我正在尝试从 Java 程序中的 Web 服务获取结果。我以前做过 xml 服务,但是这个是基于文本的,我不知道如何记录响应。
这是网络服务:http ://ws.geonames.org/countryCode?lat=47.03&lng=10.2
谢谢!
我正在尝试从 Java 程序中的 Web 服务获取结果。我以前做过 xml 服务,但是这个是基于文本的,我不知道如何记录响应。
这是网络服务:http ://ws.geonames.org/countryCode?lat=47.03&lng=10.2
谢谢!
如果它只是文本,并且您不使用任何标准格式(如 SOAP),则需要使用 Sockets:
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 服务),请使用它:
String countryCode = in.readLine();
并完成:
serviceConnection.close();
就我而言,国家代码是“AT”
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");
}
}
除了 URL 之外的另一种实现是使用 HttpClient。