禅道接口是http接口,本文使用的是httpclient调用禅道接口
一、获取操作的sessionID
禅道api相关操作都需要登录后才能进行(请求需要携带登录完成cookie),请求地址http://127.0.0.1/zentao/api-getsessionid.json。
二、登录禅道
请求地址http://127.0.0.1/zentao/user-login.json,需要携带的参数用户名account,密码password,上一步获取的zentaosid,此步骤进行过后返回的cookie需要储存起来,后面需要使用。
三、查询某用户
请求地址http://127.0.0.1/zentao/user-view-[用户名].json,携带上一步登录后产生的cookie进行请求,否则请求无法成功。
四、创建用户
创建用户为最复杂的地方
1、先获取禅道创建用户的必要属性。
①、先在此界面手动添加一次用户
②、在浏览器的开发者模式下查看创建用户的参数,然后我们发现其中的password1,password2,verifyPassword为加密后的数值。
2、获取创建用户时密码的加密规则
①、在浏览器的开发者模式下查看创建用户界面的js方法发现password1,password2加密方法为一样的,verifyPassword为另一种加密方法。
②、获取rand变量,通过上一步发现密码的加密离不开一个名为rand的变量,通过查看页面发现rand值的获取来自创建用户界面的input框。但此input框的值每次访问都会发生变化,所以每次创建用户时都要先获取这个input框的值(我们可以通过使用java发送http请求,来获取整个界面,获取input框的值)。
③、获取禅道的md5加密方法,我们再创建用户界面会看到这样一个md5.js,此js中包含的就是禅道的md5加密方法。
3、使用java调用。所以需要的参数都获取到了,可以通过java发送http请求,将参数使用form-data方式发送至http://127.0.0.1/zentao/user-create-0.json地址,即可成功创建用户
五、示例代码(本地测试)
1、引用jar包
com.google.code.gson
gson
2.8.5
org.apache.httpcomponents
httpclient
4.5.8
org.apache.httpcomponents
httpcore
4.4.11
org.apache.httpcomponents
httpmime
4.5.8
org.apache.logging.log4j
log4j-api
2.7
org.apache.commons
commons-lang3
3.9
2、代码(经测试可行)
package zentao.api;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.CookieStore;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.LaxRedirectStrategy;
import org.apache.http.message.BasicNameValuePair;