0

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

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

对不起所有的菜鸟问题。

4

2 回答 2

1
  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();
    }
}
于 2010-10-19T20:42:20.673 回答
0

Foursqare API 使用简单的 HTTP 获取方法(又名 RESTful Web 服务)。在 Java 中有多种调用 RESTful Web 服务的方法,请参阅:

于 2010-10-19T20:45:49.047 回答