您的位置:首页 > 理论基础 > 计算机网络

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: