调用其它系统接口,发起一个 post 请求,写法如下:
import cn.com.infinitus.yunxiao.jira.vo.EpicVo;
import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;
import okhttp3.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
@Service
public class Yunxiao {
@Setter
@Getter
@Value("${project.createProjectUrl}")
private String createProjectUrl; // 创建项目 URL
...
public Map<String, Object> createEpic(projectVo vo) throws IOException {
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(JSON, vo.toString());
Request request = new Request.Builder()
.addHeader("Authorization", authorization)
.url(createProjectUrl)
.post(body)
.build();
Response response = client.newCall(request).execute();
// 如 {"id":10004,"msg":"d22已存在,勿重复添加","content":null}
String msg = response.body().string();
JSONObject obj = JSONObject.parseObject(msg);
Object message = obj.get("msg");
...
}
}
createProjectUrl 为请求 URL。projectVo 为请求体参数对象。
RequestBody.create(JSON, vo.toString()); 中 vo.toString() 建议改写为: new Gson().toJson(vo) 把对象转为 json 。
从 response 对象中可以取到请求响应结果。解析 json 便可以直接执行后续业务 ...