| 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);
}
}
}