• 接口相关


    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("");
    }
    }
    }
  • 相关阅读:
    添加搜索引擎
    理解隐马尔可夫模型(转载)
    全排列合集
    COM使用简介
    KMP算法
    遗传算法(转载)
    退火算法(转载)
    非电信手机获取闪讯密码的一种实现方法
    几个时间控制函数(转载)
    图像处理的Alpha通道
  • 原文地址:https://www.cnblogs.com/chappell/p/9068891.html
Copyright © 2020-2023  润新知