Oracle® Fusion Middleware Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理 12c (12.2.1.3.0) E90181-03 |
|
前 |
Twitter REST APIはOWSMでサポートされます。
REST APIでは、Twitterデータの読取りおよび書込み、新しいTweetの作成、作成者プロファイルおよびフォロワ・データの読取りなどのプログラムによるアクセスを提供します。REST APIは、OAuthを使用してTwitterアプリケーションおよびユーザーを識別します。レスポンスをJSONで取得できます。テストする2つのAPI(POSTおよびGET)を次に示します。
POSTリクエストのTwitter RESTクライアントのサンプル・コード
GETリクエストの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); } }
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); } } }