我正在尝试从java程序中的Web服务获取结果。我以前做过xml服务,但这个是基于文本的,我无法弄清楚如何记录响应。
以下是webService:http://ws.geonames.org/countryCode?lat=47.03&lng=10.2
谢谢!
答案 0 :(得分: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服务),请使用此选项:
String countryCode = in.readLine();
结束时:
serviceConnection.close();
就我而言,countryCode是“AT”
答案 1 :(得分: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");
}
}
答案 2 :(得分:0)
除URL之外的另一种实现是使用HttpClient。