接口相关

1、Webservice:效率不高基于soap协议,其主要的特点是跨语言、跨平台的。项目中不推荐使用,可用于不同公司间接口的调用。

2、使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。

3、使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。使用Java语言开发,只能用于Java语言开发的项目间的通信,不具备跨语言,跨平台的特点!

调用REST风格接口:

    Map<String, String> m = new HashMap<String, String>();
    m.put("check", "false");
    m.put("userId", userId);
    m.put("data", allresouce.toString());

    msg =doRest(url, "POST", m);
public static String doRest(String uri, String methodName, Map param)
            throws Exception {
        if ((methodName == null) || ("".equals(methodName)))
            methodName = "GET";

        String data = "";
        System.out.println(methodName + " rest:" + uri);

        HttpClient httpClient = new DefaultHttpClient();

        HttpRequestBase request = null;
        if ("GET".equals(methodName)) {
            request = new HttpGet(uri);
        } else {
            List list;
            Iterator iterator;
            Object key;
            BasicNameValuePair pair;
            if ("POST".equals(methodName)) {
                request = new HttpPost(uri);
                list = new ArrayList();
                for (iterator = param.keySet().iterator(); iterator.hasNext(); ) {
                    key = iterator.next();
                    pair = new BasicNameValuePair((String) key,
                            (String) param.get(key));
                    System.out.println(pair.toString());
                    list.add(pair);
                }
                ((HttpEntityEnclosingRequestBase) request)
                        .setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
            } else if ("PUT".equals(methodName)) {
                request = new HttpPut(uri);
                list = new ArrayList();
                for (iterator = param.keySet().iterator(); iterator.hasNext(); ) {
                    key = iterator.next();
                    pair = new BasicNameValuePair((String) key,
                            (String) param.get(key));
                    System.out.println("-------------------
"+ pair.toString());
                    list.add(pair);
                }
                System.out.println("SIZE--------------------------"+ list.size());
                ((HttpEntityEnclosingRequestBase) request)
                        .setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
            } else if ("DELETE".equals(methodName)) {
                request = new HttpDelete(uri);
            }
        }
        try {
            HttpResponse response = httpClient.execute(request);
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != 200) {
                System.out.println("Method failed: " + response.getStatusLine()
                        + " for url " + uri);
                throw new Exception("Method failed: "
                        + response.getStatusLine() + " for url " + uri);
            }
            InputStream inputStream = response.getEntity().getContent();
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    inputStream, "UTF-8"));
            StringBuffer stringBuffer = new StringBuffer();
            String str = "";
            while ((str = br.readLine()) != null)
                stringBuffer.append(str);

            data = stringBuffer.toString();
        } catch (HttpException e) {
            throw e;
        } catch (IOException e) {
            throw e;
        } catch (Exception e) {
            throw e;
        } finally {
            try {
                httpClient.getConnectionManager().shutdown();
            } catch (Exception ignore) {
            }
        }
        System.out.println("rest data:" + data);
        return data;
    }

调用webservice接口

          org.apache.axis.client.Service service = new org.apache.axis.client.Service();
                Call call;
                call = (Call) service.createCall();
                call.setTargetEndpointAddress(new java.net.URL(smpWebServiceUrl));
                call.setOperationName("startNetMgrFromBomc");
                call.addParameter("RequestInfo", XMLType.XSD_STRING,ParameterMode.IN);
                call.setReturnType(XMLType.XSD_STRING); 
                Object[] para =  new Object[] {sendInfo};
                Object ret = call.invoke("http://service.smp.linkage.com/","startNetMgrFromBomc",para); 
                String returnStr = (String) ret; 
                System.err.println("^^^^^^^^^^SMP:"+returnStr);
                System.err.println();
                Document document = DocumentHelper.parseText(returnStr);
                Element returnInfo = document.getRootElement();
                
                Element elReturnCode = returnInfo.element("returnCode");
                String returnCode = elReturnCode.getText();
                
                Element elErrorInfo = returnInfo.element("errorInfo");
                errorInfo = elErrorInfo.getText();        
                Element eSmpId = returnInfo.element("smpId");
                String smpId = eSmpId.getText();

生成xml文件

Document sendDoc = DocumentHelper.createDocument();
String title = sendDoc.asXML();
Element callInfo = sendDoc.addElement("callInfo");
Element billInfo = callInfo.addElement("billInfo");
Element bomcId = billInfo.addElement("bomcId");    //工单Id
bomcId.addText(“123456”);
return title+callInfo.asXML();//string

解析xml  :

Document history = DocumentHelper.parseText(xml);
Element root = history.getRootElement();
for (Iterator<Element> iter = root.elementIterator(); iter.hasNext();) {
     Element element = iter.next();
     if(element.element("fields")==null){
         continue;
     }
     Attribute nodeId = element.attribute("parentId");
     System.out.println(nodeId.getValue());
   for (Iterator<Element> fields = element.element("fields").elementIterator();fields.hasNext(); ) {
Element field = fields.next();
if(nodeId.getValue().equals("0") && field.attribute("id").getValue().equals("flow_attach")){
itsmTaskDatas.get(0).setContext(field.getText()); //暂时把附件信息放这
continue;
}
String id = field.attribute("id").getValue();
if(id.equals("auditdesc")||id.equals("manager_opinion")||id.equals("fhandle_opinion")||id.equals("dispose_result")||id.equals("isReport")){
System.out.println(id+"::::"+field.getText());
itsmTaskDatas.get(i).setContext(field.getText());
break;
}else{
itsmTaskDatas.get(i).setContext("");
}
}
}
原文地址:https://www.cnblogs.com/chappell/p/9068891.html