F Twitter REST API

Twitter REST APIはOWSMでサポートされます。

REST APIでは、Twitterデータの読取りおよび書込み、新しいTweetの作成、作成者プロファイルおよびフォロワ・データの読取りなどのプログラムによるアクセスを提供します。REST APIは、OAuthを使用してTwitterアプリケーションおよびユーザーを識別します。レスポンスをJSONで取得できます。テストする2つのAPI(POSTおよびGET)を次に示します。

  • POSTリクエストのTwitter RESTクライアントのサンプル・コード

  • GETリクエストのTwitter RESTクライアントのサンプル・コード

F.1 POSTリクエストのTwitter RESTクライアントのサンプル・コード

REST APIは、OAuthを使用してTwitterアプリケーションおよびユーザーを識別します。レスポンスをJSONで取得できます。POSTリクエストのRESTクライアント・サンプル・コードは次のとおりです。

package sample.rest.client;

  

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Date; 

import java.util.Set; 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.ws.rs.client.Client;

import javax.ws.rs.client.ClientBuilder;

import javax.ws.rs.client.Entity;

import javax.ws.rs.client.Invocation.Builder;

import javax.ws.rs.client.WebTarget;

import javax.ws.rs.core.MediaType;

import javax.ws.rs.core.Response;

import javax.ws.rs.core.MultivaluedMap;

import javax.ws.rs.core.MultivaluedHashMap;

 

import org.glassfish.jersey.client.ClientConfig;

import oracle.wsm.metadata.feature.PolicyReferenceFeature; 

import oracle.wsm.metadata.feature.AbstractPolicyFeature; 

import oracle.wsm.metadata.feature.PolicySetFeature; 

import oracle.wsm.metadata.feature.PropertyFeature;

import oracle.wsm.security.util.SecurityConstants;

  

public class TwitterTestClientPost extends HttpServlet {

    @Override

    protected void doGet(HttpServletRequest httpRequest, HttpServletResponse httpResponse)

    throws ServletException, IOException {

        httpResponse.setContentType("text/plain;charset=UTF-8");

        PrintWriter out = httpResponse.getWriter();

        try {   

            System.setProperty("https.proxyHost", "www-proxy.us.example.com");

            System.setProperty("https.proxyPort", "80");

            String BASE_URI = "https://api.twitter.com/1.1/statuses/update.json";

  

            PropertyFeature clientCsfKey = new PropertyFeature(SecurityConstants.ConfigOverride.CO_OAUTH1_CLIENT_CSF_KEY, "basic.client.oauth1.credentials");

            PropertyFeature accessTokenCsfKey = new PropertyFeature(SecurityConstants.ConfigOverride.CO_OAUTH1_ACCESS_TOKEN_CSF_KEY, "basic.token.oauth1.credentials");            

            PolicyReferenceFeature clientPRF = new PolicyReferenceFeature("oracle/http_oauth1_token_client_policy", clientCsfKey, accessTokenCsfKey);

            ClientConfig cc = new ClientConfig();

            cc.property(AbstractPolicyFeature.ABSTRACT_POLICY_FEATURE, new PolicySetFeature(clientPRF));

            Client client = ClientBuilder.newClient(cc);

            WebTarget webTarget = client.target(BASE_URI);

          

            Builder request = webTarget.request(MediaType.APPLICATION_JSON_TYPE);

            MultivaluedMap<String, String> formData = new MultivaluedHasMap<String, String>();

            String tweet = "Testing POST_Status at " + new Date();

            formData.add("status", tweet);

            Response response = request.post(Entity.form(formData));

                                                                                   

            String textEntity = response.readEntity(String.class);

            out.println("Response status :" + response.getStatus());

            out.println("Response :" + textEntity);

						MultivaluedMap<String,Object> map = response.getHeaders();

						Set<String> headerkeys = map.keySet();

            for (String key : headerKeys) {

               out.println("Header Name :" + key);

               out.println("Header Value :" + map.get(key));

            }

        } catch (Exception e) {

            out.println("exception message :" + e);        

        }

    }						

F.2 GETリクエストのTwitter RESTクライアントのサンプル・コード

REST APIは、OAuthを使用してTwitterアプリケーションおよびユーザーを識別します。レスポンスをJSONで取得できます。GETリクエストのRESTクライアント・サンプル・コードは次のとおりです。

package sample.rest.client; 

   

import java.io.IOException; 

import java.io.PrintWriter; 

import java.util.Date;  

import java.util.Set;  

import javax.servlet.ServletException; 

import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 

import javax.ws.rs.client.Client; 

import javax.ws.rs.client.ClientBuilder; 

import javax.ws.rs.client.Entity; 

import javax.ws.rs.client.Invocation.Builder; 

import javax.ws.rs.client.WebTarget; 

import javax.ws.rs.core.MediaType; 

import javax.ws.rs.core.Response;

import javax.ws.rs.core.MultivaluedMap; 

import javax.ws.rs.core.MultivaluedHashMap;

import org.glassfish.jersey.client.ClientConfig; 

import oracle.wsm.metadata.feature.PolicyReferenceFeature;  

import oracle.wsm.metadata.feature.AbstractPolicyFeature; 

import oracle.wsm.metadata.feature.PolicySetFeature;  

import oracle.wsm.metadata.feature.PropertyFeature; 

import oracle.wsm.security.util.SecurityConstants;

  

public class TwitterTestClientGet extends HttpServlet {    

    @Override

    protected void doGet(HttpServletRequest httpRequest, HttpServletResponse httpResponse)

    throws ServletException, IOException {

        httpResponse.setContentType("text/plain;charset=UTF-8");

        PrintWriter out = httpResponse.getWriter();

        try {

            System.setProperty("https.proxyHost", "www-proxy.us.example.com");

            System.setProperty("https.proxyPort", "80");

            String BASE_URI = "https://api.twitter.com/1.1/followers/list.json?screen_name=TwiiterapiT";

            PropertyFeature clientCsfKey = new PropertyFeature(SecurityConstants.ConfigOverride.CO_OAUTH1_CLIENT_CSF_KEY, "basic.client.oauth1.credentials");

            PropertyFeature accessTokenCsfKey = new PropertyFeature(SecurityConstants.ConfigOverride.CO_OAUTH1_ACCESS_TOKEN_CSF_KEY, "basic.token.oauth1.credentials");

            PolicyReferenceFeature clientPRF = new PolicyReferenceFeature("oracle/http_oauth1_token_client_policy", clientCsfKey, accessTokenCsfKey);

            ClientConfig cc = new ClientConfig();

            cc.property(AbstractPolicyFeature.ABSTRACT_POLICY_FEATURE, new PolicySetFeature(clientPRF));

            Client client = ClientBuilder.newClient(cc);

            WebTarget webTarget = client.target(BASE_URI);

            Builder request = webTarget.request(MediaType.APPLICATION_JSON_TYPE);

            Response response = request.get(Response.class);

 

            String textEntity = response.readEntity(String.class);

            out.println("Response status :" + response.getStatus());

            out.println("Response :" + textEntity);

            MultivaluedMap <String,object> map = response.getHeaders();	
				
						Set<String> headerkeys = map.kerySet();

						for (String key : headerkeys) {

								out.println("Header Name :" + key);

                out.println("Header Value :" + map.get(key));

            }

        } catch (Exception e) {

            out.println("exception message :" + e);

        }

    }

}