我可以使用 ALfresco REST API 登录到 alfresco。我是通过java类来做的。也能够将响应消息设为“OK”。但是任何人都可以告诉我如何检索登录时生成的票证。
3 回答
要获得一张票,您通常会调用http://localhost:8080/alfresco/s/api/login
- (或类似的) - GET 或 POST:
试试这个:
curl -XPOST -H "Content-Type: application/json" -d '{"username":"admin","password":"admin"}' http://localhost:8080/alfresco/s/api/login
它返回一个 JSON 数据结构:
{
"data":
{
"ticket":"TICKET_3c255a809fadbf8abddd0546cbe354c2ab6d3995"
}
}
或者一个基本的 GET:
curl 'http://localhost:8080/alfresco/s/api/login?u=admin&pw=admin'
它返回一个包含票证的 XML 文档:
<?xml version="1.0" encoding="UTF-8"?>
<ticket>TICKET_6f997d0e561b07430c19043d7c42783d08b02489</ticket>
也就是说,如果您想要更高级别的抽象来处理身份验证、会话、超时等低级别通信问题,您可能需要查看 spring webscripts 连接器框架。https://artifacts.alfresco.com/nexus/content/repositories/public/spring-surf-parent/spring-webscripts/spring-webscripts/apidocs/org/springframework/extensions/webscripts/connector/AlfrescoConnector.html可能是很好的切入点。看看 Alfresco 分享,看看它是如何使用的。
如果您像这里的 java 示例中描述的公共 HttpClient 示例一样执行此操作:http://wiki.alfresco.com/wiki/Repository_RESTful_API_Reference#Login,
然后可以在响应的正文中找到票证 (method.getResponseBodyAsString();),它看起来与@andreas-steffan 在他的回答中显示的完全一样。您只需要解析 json 响应。
下面是相同的java函数。
private static String getAlfticket() throws IOException, JSONException {
String ticket = "";
URL url = new URL("http://hostname/alfresco/service/api/login u="+USERNAME+"&pw="+PASSWORD+"&format=json");
URLConnection con = url.openConnection();
InputStream in = con.getInputStream();
String encoding = con.getContentEncoding();
encoding = encoding == null ? "UTF-8" : encoding;
String json = IOUtils.toString(in, encoding);
JSONObject getData = new JSONObject(json);
System.out.println(getData.getJSONObject("data").get("ticket")
.toString());
ticket =getData.getJSONObject("data").get("ticket").toString();
return ticket;
}
下面是类似的链接。我也回答了问题。