Как использовать Facebook-API Graph-API из сервлета - PullRequest
2 голосов
/ 29 апреля 2010

Мне нужно получить доступ к Facebook из J2EE-приложения (на стороне сервера).Сначала я посмотрел на этот проект: http://code.google.com/p/facebook-java-api/, но, поскольку мне нужно создавать Facebook-события и приглашать людей, это не помогает.

Так что я думаю, что мне нужно использовать Graph API,но я не имею ни малейшего понятия о том, как выполнять те запросы HTTP POST, которые необходимы, особенно о том, как добавить вложенные атрибуты.

1 Ответ

2 голосов
/ 29 апреля 2010

Вы можете использовать java.net.URLConnection для этого:

String url = "http://facebook.com/some/api";
String charset = "UTF-8";
String param1 = URLEncoder.encode("value1", charset);
String param2 = URLEncoder.encode("value2", charset);
String query = String.format("param1=%s&param2=%s", param1, param2);

URLConnection urlConnection = new URL(url).openConnection();
urlConnection.setUseCaches(false);
urlConnection.setDoOutput(true); // Triggers POST.
urlConnection.setRequestProperty("accept-charset", charset);
urlConnection.setRequestProperty("content-type", "application/x-www-form-urlencoded");

OutputStreamWriter writer = null;
try {
    writer = new OutputStreamWriter(urlConnection.getOutputStream(), charset);
    writer.write(query); // Write POST query string (if any needed).
} finally {
    if (writer != null) try { writer.close(); } catch (IOException logOrIgnore) {}
}

InputStream response = urlConnection.getInputStream();
// Now do your thing with the facebook response.

В качестве альтернативы вы также можете использовать более удобный HttpClient API для этого:

String url = "http://facebook.com/some/api";
String charset = "UTF-8";
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("param1", "value1"));
params.add(new BasicNameValuePair("param2", "value2"));
UrlEncodedFormEntity query = new UrlEncodedFormEntity(params, charset);

HttpClient client = new DefaultHttpClient()
HttpPost post = new HttpPost(url);
post.setEntity(query);
InputStream response = client.execute(post).getEntity().getContent();
// Now do your thing with the facebook response.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...