foursquare API和java

我计划开发一个非常简单的Java应用程序(不是移动设备,但桌面应用程序),它利用Web服务,特别是Foursquare API和Google Map Web Service。 我计划获取用户地址,然后使用Google Map将地址转换为经度和经度,然后将此结果提供给foursquare API方法Venue方法(附近和搜索)以获取附近场地的结果并将其显示给用户。 问题是:

  1. 这一切都可以用Java吗?
  2. 如何在java中调用此类http://api.foursquare.com/v1/venues并获得结果? 我知道我可以使用Xpath来解析结果。 我只是不确定如何在java中调用这些post方法并将参数传递给它。
  3. 有没有使用foursquare API的示例java代码?
  4. 如果foursquare API不能在移动设备上使用,它会工作吗?

抱歉所有的菜鸟问题。

  1. 是的,这是可能的,但我不知道FourSquare API足以100%放心地回答。
  2. 建立与该URL的URL连接,并创建符合其API的GET或POST请求。
  3. 谷歌是你的朋友。
  4. 你当然可以发出HTTP请求。 你对结果做了什么是另一回事。

更新:

我没有在FourSquare注册。 试试这个,让我知道它是否适合你:

package foursquare; import java.io.*; import java.net.Authenticator; import java.net.URL; /** * FourSquareDemo * User: Michael * Date: 10/19/10 * Time: 7:53 PM */ public class FourSquareDemo { private static final int DEFAULT_CAPACITY = 4096; private static final String DEFAULT_URL = "http://api.foursquare.com/v1/"; private static final String DEFAULT_EMAIL = "you@gmail.com"; private static final String DEFAULT_PASSWORD = "password"; public static void main(String[] args) { long startTime = System.currentTimeMillis(); long endTime = 0L; try { String downloadSite = ((args.length > 0) ? args[0] : DEFAULT_URL); URL url = new URL(downloadSite + "history"); Authenticator.setDefault(new BasicAuthenticator(DEFAULT_EMAIL, DEFAULT_PASSWORD)); String contents = readFromUrl(url); PrintStream ps = ((args.length > 1) ? new PrintStream(new FileOutputStream(new File(args[1]))) : System.out); printToStream(ps, contents); } catch (Exception e) { e.printStackTrace(); } finally { endTime = System.currentTimeMillis(); System.out.println("wall time: " + (endTime - startTime) + " ms"); } } private static void printToStream(PrintStream ps, String contents) throws IOException { ps.println(contents.toString()); ps.close(); } private static String readFromUrl(URL url) throws IOException { StringBuilder contents = new StringBuilder(DEFAULT_CAPACITY); BufferedReader br = null; try { InputStream is = url.openConnection().getInputStream(); br = new BufferedReader(new InputStreamReader(is)); String line; String newline = System.getProperty("line.separator"); while ((line = br.readLine()) != null) { contents.append(line).append(newline); } } finally { try { if (br != null) { br.close(); } } catch (IOException e) { e.printStackTrace(); } } return contents.toString(); } } 

Foursqare API使用简单的HTTP get方法(也称为RESTful Web服务)。 有许多方法可以用Java调用RESTful Web服务,请参阅:

  • 用Java实现RESTful Web服务 – 显示JAX-RS,也使用JSON(可以在Foursquare中使用,而不是XML)
  • Apache CXF – 一种流行的Web服务框架,也支持创建RESTful客户端。
Interesting Posts