liferay 6.2 +httpclient4.5 调用 REST service
2015-09-16 11:20
489 查看
正在学习liferay 6.2, 它提供很多JSONWS API , 利用http client可以很方便的调用这些 rest service, 下面例子是journalarticle/add-article;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.apache.http.HttpHost;
import org.apache.http.NameValuePair;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.AuthCache;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class LiferayTest {
public static void main(String[] args) throws Exception{
addArticle();
}
private static void addArticle(){
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpHost targetHost = new HttpHost("localhost", 8080, "http");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope(targetHost.getHostName(), targetHost.getPort()),
new UsernamePasswordCredentials("test@test.com", "test"));
// Create AuthCache instance
AuthCache authCache = new BasicAuthCache();
// Generate BASIC scheme object and add it to the local auth cache
BasicScheme basicAuth = new BasicScheme();
authCache.put(targetHost, basicAuth);
// Add AuthCache to the execution context
HttpClientContext context = HttpClientContext.create();
context.setCredentialsProvider(credsProvider);
context.setAuthCache(authCache);
HttpPost post = new HttpPost("/api/jsonws/journalarticle/add-article");
// HttpGet httpget = new HttpGet("/");
Calendar yesterday = Calendar.getInstance();
yesterday.add(Calendar.DAY_OF_YEAR, -1);
Calendar nextWeek = Calendar.getInstance();
nextWeek.add(Calendar.WEEK_OF_YEAR, 1);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("groupId", "20182"));
params.add(new BasicNameValuePair("folderId", "0"));
params.add(new BasicNameValuePair("classNameId", "0"));
params.add(new BasicNameValuePair("classPK", "0"));
params.add(new BasicNameValuePair("articleId", "800"));
params.add(new BasicNameValuePair("autoArticleId", "false"));
params.add(new BasicNameValuePair("titleMap", "{\"en_US\":\"Test JSON Article\"}"));
params.add(new BasicNameValuePair("descriptionMap", "{\"en_US\":\"Test JSON Description\"}"));
params.add(new BasicNameValuePair("content", "<?xml version=\"1.0\"?><root available-locales=\"en_US\" default-locale=\"en_US\">"
+ "<dynamic-element name=\"content\" type=\"text_area\" index-type=\"keyword\" index=\"0\">"
+ "<dynamic-content language-id=\"en_US\">"
+ "<![CDATA[<div ><h2>Welcome To Liferay Portal</h2></div>]]></dynamic-content></dynamic-element></root>"
));
params.add(new BasicNameValuePair("type", "general"));
params.add(new BasicNameValuePair("ddmStructureKey", ""));
params.add(new BasicNameValuePair("ddmTemplateKey", ""));
params.add(new BasicNameValuePair("layoutUuid", ""));
params.add(new BasicNameValuePair("displayDateMonth", "" + (1 + yesterday.get(Calendar.MONTH))));
params.add(new BasicNameValuePair("displayDateDay", "" + yesterday.get(Calendar.DAY_OF_MONTH)));
params.add(new BasicNameValuePair("displayDateYear", "" + yesterday.get(Calendar.YEAR)));
params.add(new BasicNameValuePair("displayDateHour", "" + yesterday.get(Calendar.HOUR_OF_DAY)));
params.add(new BasicNameValuePair("displayDateMinute", "" + yesterday.get(Calendar.MINUTE)));
params.add(new BasicNameValuePair("expirationDateMonth", "" + (1 + nextWeek.get(Calendar.MONTH))));
params.add(new BasicNameValuePair("expirationDateDay", "" + nextWeek.get(Calendar.DAY_OF_MONTH)));
params.add(new BasicNameValuePair("expirationDateYear", "" + nextWeek.get(Calendar.YEAR)));
params.add(new BasicNameValuePair("expirationDateHour", "" + nextWeek.get(Calendar.HOUR_OF_DAY)));
params.add(new BasicNameValuePair("expirationDateMinute", "" + nextWeek.get(Calendar.MINUTE)));
params.add(new BasicNameValuePair("neverExpire", "false"));
params.add(new BasicNameValuePair("reviewDateMonth", "" + (1 + nextWeek.get(Calendar.MONTH))));
params.add(new BasicNameValuePair("reviewDateDay", "" + nextWeek.get(Calendar.DAY_OF_MONTH)));
params.add(new BasicNameValuePair("reviewDateYear", "" + nextWeek.get(Calendar.YEAR)));
params.add(new BasicNameValuePair("reviewDateHour", "" + nextWeek.get(Calendar.HOUR_OF_DAY)));
params.add(new BasicNameValuePair("reviewDateMinute", "" + nextWeek.get(Calendar.MINUTE)));
params.add(new BasicNameValuePair("neverReview", "false"));
params.add(new BasicNameValuePair("indexable", "true"));
params.add(new BasicNameValuePair("articleURL", "articleURL"));
params.add(new BasicNameValuePair("serviceContext", "{}"));
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
post.setEntity(entity);
CloseableHttpResponse resp = httpclient.execute(targetHost, post, context);
try {
System.out.println(resp.getStatusLine());
System.out.println(EntityUtils.toString(entity));
EntityUtils.consume(entity);
} finally {
resp.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
通过以下sql可以看到记录已插入
select * from journalarticle
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.apache.http.HttpHost;
import org.apache.http.NameValuePair;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.AuthCache;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class LiferayTest {
public static void main(String[] args) throws Exception{
addArticle();
}
private static void addArticle(){
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpHost targetHost = new HttpHost("localhost", 8080, "http");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope(targetHost.getHostName(), targetHost.getPort()),
new UsernamePasswordCredentials("test@test.com", "test"));
// Create AuthCache instance
AuthCache authCache = new BasicAuthCache();
// Generate BASIC scheme object and add it to the local auth cache
BasicScheme basicAuth = new BasicScheme();
authCache.put(targetHost, basicAuth);
// Add AuthCache to the execution context
HttpClientContext context = HttpClientContext.create();
context.setCredentialsProvider(credsProvider);
context.setAuthCache(authCache);
HttpPost post = new HttpPost("/api/jsonws/journalarticle/add-article");
// HttpGet httpget = new HttpGet("/");
Calendar yesterday = Calendar.getInstance();
yesterday.add(Calendar.DAY_OF_YEAR, -1);
Calendar nextWeek = Calendar.getInstance();
nextWeek.add(Calendar.WEEK_OF_YEAR, 1);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("groupId", "20182"));
params.add(new BasicNameValuePair("folderId", "0"));
params.add(new BasicNameValuePair("classNameId", "0"));
params.add(new BasicNameValuePair("classPK", "0"));
params.add(new BasicNameValuePair("articleId", "800"));
params.add(new BasicNameValuePair("autoArticleId", "false"));
params.add(new BasicNameValuePair("titleMap", "{\"en_US\":\"Test JSON Article\"}"));
params.add(new BasicNameValuePair("descriptionMap", "{\"en_US\":\"Test JSON Description\"}"));
params.add(new BasicNameValuePair("content", "<?xml version=\"1.0\"?><root available-locales=\"en_US\" default-locale=\"en_US\">"
+ "<dynamic-element name=\"content\" type=\"text_area\" index-type=\"keyword\" index=\"0\">"
+ "<dynamic-content language-id=\"en_US\">"
+ "<![CDATA[<div ><h2>Welcome To Liferay Portal</h2></div>]]></dynamic-content></dynamic-element></root>"
));
params.add(new BasicNameValuePair("type", "general"));
params.add(new BasicNameValuePair("ddmStructureKey", ""));
params.add(new BasicNameValuePair("ddmTemplateKey", ""));
params.add(new BasicNameValuePair("layoutUuid", ""));
params.add(new BasicNameValuePair("displayDateMonth", "" + (1 + yesterday.get(Calendar.MONTH))));
params.add(new BasicNameValuePair("displayDateDay", "" + yesterday.get(Calendar.DAY_OF_MONTH)));
params.add(new BasicNameValuePair("displayDateYear", "" + yesterday.get(Calendar.YEAR)));
params.add(new BasicNameValuePair("displayDateHour", "" + yesterday.get(Calendar.HOUR_OF_DAY)));
params.add(new BasicNameValuePair("displayDateMinute", "" + yesterday.get(Calendar.MINUTE)));
params.add(new BasicNameValuePair("expirationDateMonth", "" + (1 + nextWeek.get(Calendar.MONTH))));
params.add(new BasicNameValuePair("expirationDateDay", "" + nextWeek.get(Calendar.DAY_OF_MONTH)));
params.add(new BasicNameValuePair("expirationDateYear", "" + nextWeek.get(Calendar.YEAR)));
params.add(new BasicNameValuePair("expirationDateHour", "" + nextWeek.get(Calendar.HOUR_OF_DAY)));
params.add(new BasicNameValuePair("expirationDateMinute", "" + nextWeek.get(Calendar.MINUTE)));
params.add(new BasicNameValuePair("neverExpire", "false"));
params.add(new BasicNameValuePair("reviewDateMonth", "" + (1 + nextWeek.get(Calendar.MONTH))));
params.add(new BasicNameValuePair("reviewDateDay", "" + nextWeek.get(Calendar.DAY_OF_MONTH)));
params.add(new BasicNameValuePair("reviewDateYear", "" + nextWeek.get(Calendar.YEAR)));
params.add(new BasicNameValuePair("reviewDateHour", "" + nextWeek.get(Calendar.HOUR_OF_DAY)));
params.add(new BasicNameValuePair("reviewDateMinute", "" + nextWeek.get(Calendar.MINUTE)));
params.add(new BasicNameValuePair("neverReview", "false"));
params.add(new BasicNameValuePair("indexable", "true"));
params.add(new BasicNameValuePair("articleURL", "articleURL"));
params.add(new BasicNameValuePair("serviceContext", "{}"));
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
post.setEntity(entity);
CloseableHttpResponse resp = httpclient.execute(targetHost, post, context);
try {
System.out.println(resp.getStatusLine());
System.out.println(EntityUtils.toString(entity));
EntityUtils.consume(entity);
} finally {
resp.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
通过以下sql可以看到记录已插入
select * from journalarticle
相关文章推荐
- Python网络爬虫 - 1. 准备工作
- 递归神经网络不可思议的有效性
- http状态码
- 网络IO之阻塞、非阻塞、同步、异步总结
- CCF 201403-4 无线网络 (二维最短路)
- Reachability 检测网络连接
- magento学习网址http://www.ruiwant.com/
- MPTCP 介绍
- iOS网络传输Delegate不被触发的本质原因
- Linux系统编程之错误处理:perror,strerror和errno http://www.linuxidc.com/Linux/2013-07/87238.htm
- TCP/IP协议栈分析详解(二)
- TCP/IP协议栈分析详解(一)
- eclipse 使用git碰到网络超时连接不了等问题的解决方法
- TCP通信的建立断开和状态转移
- linux网络编程中常用的辅助函数
- Httphandler
- Httpmoudle
- TCP/IP协议栈的基本工作原理
- httpclient post/set请求
- ViewPager实现加载网络图片,动态添加删除效果