之前开发的webService服务都是SOAP 通过WSDL文件来生成代码开发的,最近做系统集成时遇到REST的方式调用webService,现整理实现方案如下:
//REST服务是通过通过URL传递参数 返回JSON数据类型
byte[] data=new byte[5024];
int len=0;
try {
URL url=new URL("http://域名/seal/services/seal/process/useApply/single/create");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");// 提交模式
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
conn.setRequestProperty("Authorization", token);//设置http头权限认证传值
conn.setUseCaches(false);
conn.setDoOutput(true);// 是否输入参数
//参数拼接--字节流的形式
// StringBuffer param = new StringBuffer();
// param.append("docNo=").append(info.getContractNumber()).append("&");、
// param.append("remark=").append(info.getDescription()).append("&");//备注(非必填)--- 合同背景
// param.append("upperSysName=").append("0").append("");// 上游系统名称---系统名称(简称)
// data=param.toString().getBytes();
// InputStream inStream=conn.getInputStream();
// while((len=inStream.read(data))!=-1){
// outStream.write(data);
// }
// inStream.close();
//参数拼接--json对象的形式
InputStream inStream=conn.getInputStream();
JSONObject mesg = new JSONObject();
mesg.put("remark",info.getDescription());//备注(非必填)--- 合同背景
mesg.put("integrationId","003");//主键
JSONArray docList = new JSONArray();
JSONObject doc = new JSONObject();
doc.put("docNo", info.getContractNumber());//文档编码---合同编码(文档编码,不是唯一性,印章系统不做校验)
doc.put("docName", "test1.docx");//文件名称—附件名称(不做检验)
docList.add(0, doc);
mesg.put("docList", docList);
conn.getOutputStream().write(mesg.toString().getBytes("UTF-8"));//调用接口并传入参数
//接收返回结果
ByteArrayOutputStream outStream1 = new ByteArrayOutputStream();
byte[] buffer1 = new byte[1024]; int len1 = 0;
while( (len1 = inStream.read(buffer1)) !=-1 ){
outStream1.write(buffer1, 0, len1);
}
byte[] data1 = outStream1.toByteArray();//网页的二进制数据
inStream.close();
String strdata =new String(data1);
return strdata;
} catch (IOException e) {
logger.debug("访问ISITE获取JSON数据失败");
}
return null;