精华内容
下载资源
问答
  • java中调用web service接口(使用AXIS的CALL调用方式) 1.首先要把AXIS包里的jar文件放到java项目的lib目录下,这里的是AXIS1_4版本 2.java代码中实现:远程调用路径以及设置参数   3.若接口提供的方法...

    java中调用web service接口(使用AXIS的CALL调用方式)

    1.首先要把AXIS包里的jar文件放到java项目的lib目录下,这里用的是AXIS1_4版本

    2.在java代码中实现:远程调用路径以及设置参数

     

    3.若接口提供的方法需要传递xml类型的参数,例如接口是这样的

    实现代码 如下:

    复制代码

    package test;
    
    import java.rmi.RemoteException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import javax.xml.namespace.QName;
    import javax.xml.rpc.ParameterMode;
    import javax.xml.rpc.ServiceException;
    
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import org.apache.axis.encoding.XMLType;
    
    import util.DBUtil;
    import util.MySqlDBUtil;
    
    
    public class CopyOfOrgSt {
        private static Connection con = null;
        private static PreparedStatement pst = null;
        private static ResultSet rs = null;
        private static Connection mcon = null;
        private static PreparedStatement mpst = null;
        private static ResultSet mrs = null;
        
        public static void main(String[] args){
            CopyOfOrgSt orgst=new CopyOfOrgSt();
            orgst.seAndtr();
        }
        
        public String invokeRemoteFuc(String method,String param) {
            System.out.println(param);
              // 远程调用路径 
              String endpoint = "http://IP地址:端口号/*/*/*?wsdl";
              String result = "call failed!";
              Service service = new Service();
              Call call;
                     try {
                         call = (Call) service.createCall();
                         call.setTargetEndpointAddress(endpoint); 
                         //new QName的URL是要指向的命名空间的名称,这个URL地址在你的wsdl打开后可以看到的,
                         //上面有写着targetNamespace="http://*.*.*/",这个就是你的命名空间值了;
                         call.setOperationName(new QName("http://*.*.*/",method)); // 调用的方法名
                         // 设置参数名 :参数名 ,参数类型:String, 参数模式:'IN' or 'OUT'
                         call.addParameter("guid",XMLType.XSD_STRING,ParameterMode.IN);
                         call.setEncodingStyle("UTF-8");
                         call.setReturnType(XMLType.XSD_STRING);
                         result = (String) call.invoke(new Object[] {param});// 远程调用
                    } catch (ServiceException e) {
                         e.printStackTrace();
                    } catch (RemoteException e) {
                         e.printStackTrace();
                    }
                    return result;
        }
        
        public  void seAndtr() {
            con=DBUtil.getConnection();
            mcon=MySqlDBUtil.getConnection();
            String param="";
            String sql="select a.FKeyID,isnull(b.FKeyID,'-1') as PARENTORGID,a.FNo,a.FName from ORGMAIN a left join ORGMAIN b on cast(a.FParentID as nvarchar(50))=b.FNo";
            String msql="select * from org_organization where orgserial=?";
            try {//   更新/添加
                pst=con.prepareStatement(sql);
                mpst=mcon.prepareStatement(msql);
                rs=pst.executeQuery();
                if(rs!=null){
                    while(rs.next()){
                        param="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"+
                                  "<ORGANIZATION>"+
                                          "<Field ColName=\"guid\" Value=\""+rs.getString("FKeyID")+"\"></Field>"+
                                          "<Field ColName=\"parentOrgId\" Value=\""+rs.getString("PARENTORGID")+"\"></Field>"+
                                          "<Field ColName=\"orgName\" Value=\""+rs.getString("FName")+"\"></Field>"+
                                          "<Field ColName=\"orgCode\" Value=\""+rs.getString("FNo")+"\"></Field>"+
                                          //"<Field ColName=\"orgManagerEmpId\" Value=\""+rs.getString("FKeyID")+"\"></Field>"+
                                          //"<Field ColName=\"orgDescripte\" Value=\""+rs.getString("FKeyID")+"\"></Field>"+
                                  "</ORGANIZATION>";
                        String ppid=rs.getString("FNo");
                        System.out.println("======================================="+ppid);
                        mpst.setString(1,ppid);
                        mrs=mpst.executeQuery();
                        
                        if(mrs.next()){//有结果集,更新
                            String result=invokeRemoteFuc("updateOrganization",param);
                            System.out.println("更新结果:"+result);
                        }else{//无结果集,新增
                            String result=invokeRemoteFuc("addOrganization",param);
                            System.out.println("新增结果:"+result);
                        }
                    }
                }
                //删除
                String delsql="select orgserial from org_organization where orgserial not in (?) and guid is not null";
                mpst=mcon.prepareStatement(delsql);
                    String dpsql="select FNo from ORGMAIN";
                    Statement dpst=con.createStatement();
                    ResultSet dprs=dpst.executeQuery(dpsql);
                    String str="";
                    if(dprs!=null){//从中间库中查询所有的FNo
                        while(dprs.next()){
                            str=str.concat(","+dprs.getString("FNo"));//将所有FNo用","拼接
                            //str.append(","+dprs.getString("FNo"));//将所有FNo用","拼接
                        }
                        str=str.substring(1);
                        mpst.setString(1,str);//将字符串设置到最外层查询
                        mrs=mpst.executeQuery();//执行最外层查询
                        String delorgserial="";
                        if(mrs!=null){
                            while(mrs.next()){
                                delorgserial=delorgserial.concat(","+mrs.getString("orgserial"));//取得oa所有的需要删除的组织编号
                            }
                            delorgserial=delorgserial.substring(1);
                            System.out.println("---"+delorgserial);
                            //取得需要删除的记录的guid和组织名,orgparentorgid字段用来关联出parentOrgId
                            String selsql="select guid,orgname,orgserial,orgparentorgid from org_organization where orgserial=?";
                            mpst=mcon.prepareStatement(selsql);    
                            String[] strs=delorgserial.split(",");
                            for(int i=0;i<strs.length;i++){
                                mpst.setString(1,strs[i]);//遍历字符数组分别赋值到sql
                                mrs=mpst.executeQuery();//执行最外层查询
                                //用查询出来的guid作为parentOrgId
                                String selmsql="";
                                if(mrs.next()){
                                    int orgparentorgid=mrs.getInt("orgparentorgid");
                                    selmsql="select guid from org_organization where org_id="+orgparentorgid;
                                }
                                Statement selmst=mcon.createStatement();
                                ResultSet selmrs=selmst.executeQuery(selmsql);
                                String guid="";
                                if(selmrs.next()){
                                    guid=selmrs.getString("guid");
                                }
                                param="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"+
                                          "<ORGANIZATION>"+
                                                  "<Field ColName=\"guid\" Value=\""+mrs.getString("guid")+"\"></Field>"+
                                                  "<Field ColName=\"parentOrgId\" Value=\""+guid+"\"></Field>"+
                                                  "<Field ColName=\"orgName\" Value=\""+mrs.getString("orgname")+"\"></Field>"+
                                                  "<Field ColName=\"orgCode\" Value=\""+mrs.getString("orgserial")+"\"></Field>"+
                                                  //"<Field ColName=\"orgManagerEmpId\" Value=\""+rs.getString("FKeyID")+"\"></Field>"+
                                                  //"<Field ColName=\"orgDescripte\" Value=\""+rs.getString("FKeyID")+"\"></Field>"+
                                          "</ORGANIZATION>";
                                //执行删除操作
                                String result=invokeRemoteFuc("delOrganization",param);
                                System.out.println("删除结果:"+result);
                                
                            }
                            
                        }else{
                            System.out.println("没有需要删除的数据");
                        }
                    }
                
                    
                rs.close();
                pst.close();
                con.close();
                mrs.close();
                mpst.close();
                mcon.close();
                
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }

    复制代码

    展开全文
  • ExecuteSQL函数 和 call 调用

    千次阅读 热门讨论 2016-09-04 13:27:13
    对于现阶段来说,我们得最多的就是SQL语句,那么对于ExecuteSQL函数应该就不会很陌生了吧。 ExecuteSQL他是一种自定义函数,是ODBC中的一个API函数,用来执行由SQLPrepare创建的SQL语句。一般只要是查询数据表就会...

        对于现阶段来说,我们用得最多的就是SQL语句,那么对于ExecuteSQL函数应该就不会很陌生了吧。

        ExecuteSQL他是一种自定义函数,是ODBC中的一个API函数,用来执行由SQLPrepare创建的SQL语句。一般只要是查询数据表就会用到这个函数,他后面一般还加两个参数TXTSQL和MsgText。今天我们就来看看这三个单词在数据库语言中的作用。

        ExecuteSQL出现的时候一定是先查询数据表了,然后set mrc,所以ExecuteSQL一定是执行SQL语句。

    txtSQL参数是用来执行SQL语句,比如 select * from 表

    MsgText参数指的是实行SQL语句后的弹出框,是成功了还是失败了。

       Call语句用于调用函数或子过程。

    viewdata是函数名或子过程名来的。

     

       调用函数或子过程序的三种方法:

    1、直接写该函数或子过程名;

    2、利用变量或对象赋值调用;

    3、用Call语句调用;

    Call 是执行调用某一个过程的命令,什么叫执行调用过程呢?过程应该知道吧?我们来看一个例子:

       
    <span style="font-family:KaiTi_GB2312;font-size:24px;">Option Explicit
    
    Private Sub Command1_Click()
    MsgBox "OK!"
    End Sub
    
    Private Sub Command2_Click()
    Call Hello
    Call Command1_Click
    End Sub
    
    Private Sub Hello()
    MsgBox "Hello!"
    End Sub</span>

    上面2个是按钮的单击事件,这个应该很熟悉了,下面最后一个是自定义过程.在Command2_Click()里,就分别用了一条CALL语句,去调用过程,使得过程执行.本来我们知道,Command1_Click()过程只有当单击该按钮,才会执行,现在根据需要,即使没有单击它,只要你需要可以随时叫(call)它执行. 语法格式 CALL 过程名当然,这个过程名是你的工程里,必须存在的(已经编写好的). 严格来说,格式应该是:CALL 过程名(参数列表)只有当过程不存在参数的时候,可以省略参数!

    展开全文
  • 找这个CALL很快,几分钟就找到了,4个参数也很明确,三个常数,1个喊话内容首址,但该喊话CALL还要用到ECX的值,每次都不一样,找这个值花了一段时间也没找到,实在是不想找了,于是就OD这个CALL处下断,然后CE内存中...

    找这个CALL很快,几分钟就找到了,4个参数也很明确,三个常数,1个喊话内容首址,但该喊话CALL还要用到ECX的值,每次都不一样,找这个值花了一段时间也没找到,实在是不想找了,于是就用OD在这个CALL处下断,然后用CE在内存中搜索ECX中的这个值,找到了不少,发现第一个$00B1EF00还比较像,拿它一试,还真成了,现将调用方法公布如下: 

    www.tansoo.cn

    展开全文
  • Web服务分布式架构中起着重要的角色,学习Web服务中,对Web Service的一些调用服务的方法做了一些整理。今天主要讲通过JavaScript中的两个方法——useService和callService来调用一个已存在的Web服务。 首先,...

    Web服务在分布式架构中起着重要的角色,在学习Web服务中,对Web Service的一些调用服务的方法做了一些整理。今天主要讲通过JavaScript中的两个方法——useService和callService来调用一个已存在的Web服务。

    首先,看一下callService这个方法的语法:

    iCallID = sElementID.sFriendlyName.callService([oCallHandler], funcOrObj, oParam);

    iCallID是调用服务后返回的ID。

    sElementID是useService方法的一个控件元素ID。稍后讲如何用userServie。

    sFriendlyName是服务名,比如.NET中Default.asmx,则这里是Default。

    oCallHandler是处理响应结果的回调函数,因为有些请求无需关注响应结果,在这里是可选参数。

    funcOrObj是web服务中的方法,在.NET中便是标有[WebMethod]的一些公用方法。

    oParam是Web Method中的参数,可以是0,1,2,…个参数。

    以下是做的一个例子:

            //请求登陆
            function loginRequest() {
                
    //服务Default.asmx, 方法CheckLoginByIO
                iCallID = service.Default.callService(loginResponse, "CheckLoginByIO", userid.value, userpwd.value, "127.0.0.1");
            }

            
    //响应登陆
            function loginResponse(res) {
                
    //调用服务出错
                if (res.error) {
                    loginError.innerText 
    = res.errorDetail.string;
                }
                
    else if (res.value.IsError) {//服务后来业务出错
                    loginError.innerText = res.value.ErrorMessage;
                }
                
    else if (res.value.IsLogin) {//登陆成功
                    loginError.innerText = "login successfully,and your name is " + res.value.UserName;
                }
                
    else {//登陆失败
                    loginError.innerText = "login failed, username or password is incorrect.";
                }
            }

    注意,如果你想知道res.value里有哪些参数,而又不知道业务逻辑那边到底返回了什么参数给你,你直接用Visual Studio 2008可以调试,不要忘了,JavaScript在IDE里的断点调试功能也是无比强大的,不逊于C#.

    鉴于对useService的用法,下面顺便讲一下createCallOptions:

            //===================================另一种风格请求Web服务================================//
            //请求执行SQL语句方法
            function executeSQLRequest() {
                
    var co = serviceZivsoft.createCallOptions(); //createCallOptions
                co.funcName = "ExecuteSql";//web服务方法名
                iCallID = serviceZivsoft.Default.callService(executeSQLResponse,co,sql.value);
            }

            
    //响应执行SQL语句方法
            function executeSQLResponse(res) {
                
    if (res.error) {
                    Span1.innerText 
    = res.errorDetail.string;
                }
                
    else {
                    
    //返回数据库表记录影响条数
                    Span1.innerText = res.value;
                }
            }

     

    其次,看一下useService如何使用。

    useService刚开始让我费解的是哪里来的这个方法,后来发现我们需要去微软官方上下载一个叫webservice.htc的文件。

    下载完这个文件,将其放到根目录下,在你的html里写上这样一段代码就轻松搞定:

    <body onload="init()" id="serviceZivsoft" style="behavior: url(webservice.htc)"/>

     

    其实,这是我个人风格,我喜欢在onload时初始化web服务,初始化代码如下:

            var iCallID;
            
    //=====================================
            //       初始化对Web服务的调用
            //      Autor: Lihua
            //      Url: http://www.zivsoft.com
            //=====================================
            function init() {
                
    //由于我的Web服务在同一个项目,所以用了相对目录
                serviceZivsoft.useService("Default.asmx?WSDL""Default");
            }

     

    关于useService更详细的解释,可以去MSDN上查阅,用法还是比较简单的。

     

    最后,给一个完整的HTML如下:

    <html>
    <head>
        
    <title>采用userSErvice调用.NET Web Services</title>

        
    <script language="JavaScript" type="text/javascript">
            
    var iCallID;
            
    //=====================================
            //       初始化对Web服务的调用
            //      Autor: Lihua
            //      Url: http://www.zivsoft.com
            //=====================================
            function init() {
                
    //由于我的Web服务在同一个项目,所以用了相对目录
                serviceZivsoft.useService("Default.asmx?WSDL""Default");
            }

            
    function Add() {
                
    //iCallID = sElementID.sFriendlyName.callService([oCallHandler], funcOrObj, oParam);


                
    //iCallID: is the returned ID of the service call. 
                //In case of asynchronous call, this ID should be matched with the ID returned as a property of the result object. 
                //Only when matched can the result object be associated with this service call.
                iCallID = serviceZivsoft.Default.callService(mathResults, "Add", a.value, b.value);
            }

            
    function mathResults(result) {
                
    // if there is an error, and the call came from the call() in init()
                if (result.error) {
                    
    // Pull the error information from the event.result.errorDetail properties
                    var xfaultcode = result.errorDetail.code;
                    
    var xfaultstring = result.errorDetail.string;
                    
    var xfaultsoap = result.errorDetail.raw;
                    
    // Add code to handle specific error codes here
                    lblError.innerHTML = "ERROR. Method call failed!"
                    
    + "<br/>iCallID:" + iCallID
                    
    + "<br/>Fault Code: " + xfaultcode
                    
    + "<br/>Fault String:" + xfaultstring
                    
    + "<br/>SOAP Data:" + xfaultsoap
                    
    + "<br/>Result:" + result.value;
                }
                
    // if there was no error
                else {
                    
    // Show the arithmetic
                    c.value = result.value;
                }
            }

            
    //请求登陆
            //--------------ZIVSOFT.COM---------------
            //--------------Lihua Zhou----------------
            function loginRequest() {
                
    //服务Default.asmx, 方法CheckLoginByIO
                iCallID = serviceZivsoft.Default.callService(loginResponse, "CheckLoginByIO", userid.value, userpwd.value, "127.0.0.1");
            }

            
    //响应登陆
            //--------------ZIVSOFT.COM---------------
            //--------------Lihua Zhou----------------
            function loginResponse(res) {
                
    //调用服务出错
                if (res.error) {
                    loginError.innerText 
    = res.errorDetail.string;
                }
                
    else if (res.value.IsError) {//服务后来业务出错
                    loginError.innerText = res.value.ErrorMessage;
                }
                
    else if (res.value.IsLogin) {//登陆成功
                    loginError.innerText = "login successfully,and your name is " + res.value.UserName;
                }
                
    else {//登陆失败
                    loginError.innerText = "login failed, username or password is incorrect.";
                }
            }

        
    </script>

    </head>
    <body onload="init()" id="serviceZivsoft" style="behavior: url(webservice.htc)">
        
    <input id="a" value="2" />+
        
    <input id="b" value="3" />=
        
    <input id="c" />
        
    <input type="button" value="compute" onclick="Add();" />
        
    <p>
            
    <span id="lblError"></span>
        
    </p>
        
    <hr />
        
    <input id="userid" />
        
    <input id="userpwd" type="password" />
        
    <input type="button" value="login" onclick="loginRequest();" />
        
    <p>
            
    <span id="loginError"></span>
        
    </p>
    </body>
    </html>

     

    补充讲一下用Post方法调用.NET Web Services,调用方式如下:

    <html xmlns="http://www.w3.org/1999/xhtml">
          <body>
              
    <form action="http://172.25.142.27/default.asmx/Add" method="post">
                    
    <input name="x" />
                    
    <input name="y" />
                    
    <input type="submit" value="Enter" />
              
    </form>
          </body>
    </html>

     

    另外,用心的朋友会注意到,默认情况下,.NET Web Services在远程机器不能使用POST来调用远程WEB服务,除非在WEB服务配置web.config中设置:

    <system.web>
          <webServices>
                 <protocols>
                      <add name="HttpGet"/> 
                      <add name="HttpPost"/> 
                </protocols> 
          </webServices>
    </system.web>

    如果没有设置,你将会得到下面这个错误: The test form is only available for requests from the local machine. 

    想尝试的朋友,可以用这个服务: http://www.w3schools.com/webservices/tempconvert.asmx

    The following shows 倒计时.

    <div id="divdown1"/>
    <script language="javascript" type="text/javascript">
     
    var interval = 1000;
     
    function ShowCountDown(year,month,day,divname)
     {
            
    var now = new Date();
            
    var endDate = new Date(year, month-1, day);
            
    var leftTime=now.getTime()-endDate.getTime();
            
    var leftsecond = parseInt(leftTime/1000);
            var day1=Math.floor(leftsecond/(60*60*24)); 
            var hour=Math.floor((leftsecond-day1*24*60*60)/3600);
            var minute=Math.floor((leftsecond-day1*24*60*60-hour*3600)/60);
            var second=Math.floor(leftsecond-day1*24*60*60-hour*3600-minute*60);
            
    var cc  =   document.getElementById(divname);
            if(hour<10){hour="0"+hour;}
            
    if(minute<10){minute="0"+minute;}
            
    if(second<10){second="0"+second;}  

            cc.innerHTML=""+day1+"天 "+hour+""+minute+""+second+"";
     }
     window.setInterval(
    function(){ShowCountDown(1982,10,20,'divdown1');}, interval);
    </script>

    本文链接:http://www.cnblogs.com/architect/archive/2009/05/14/1456818.html
    关于作者:http://www.zivsoft.com/

     

    转载于:https://www.cnblogs.com/architect/archive/2009/05/14/1456818.html

    展开全文
  • call stack 如何调用

    2014-03-11 17:09:00
    现在处理MFC上面的BUG...1. VS环境程序F5运行状态下/DEBUG/Windows/Call Stack 即可调用堆债; 2. 堆债运行到crash处的下一个就是出问题大代码处。 转载于:https://www.cnblogs.com/CocoWang/p/3594387.html...
  • 这一系列之前的两篇文章中,我介绍了如何windbg中查看调用栈的相关信息(详见小览call stack(调用栈)(一)),以及调用约定(详见小览call stack(调用栈) (二)——调用约定)。今天的这篇博客二者的基础之上,...
  • 作为一个新手来说,call,apply,bind这三种改变指向的方法对于我学习的过程中有很大的帮助,虽然我不太懂得它们的原理,但是不妨碍我去使用它们,不过,作为一个程序员。我觉的我还是应该学会或者知道一些它的原理...
  • 我的[手把手带你Godo游戏开发]第一弹FlappyBird教程中,有这样一段代码 BUG版本: # Bird.gd extends RigidBody2D func _ready(): connect("body_entered",self,"on_body_entered") func _physics_process...
  • cmd/bat文件中,如果要调用其他cmd/bat文件的话,一定要用call关键字啊! 直接调,会出现问题的。   例子如下: deleteLog-callcentercmd, 调deleteLog-callcenter-one.cmd。     dele
  • 直接返回400 bad request 错误,空操作<code>__call()没有被调用 提示信息<code>action %E7%BB%BC%E5%90%88%E7%89%88 is not valid. url is /f/%E7%BB%BC%E5%90%88%E7%89%88</code></p> <h3>UPDATE 看了一下...
  • CPublic::ReadID_call_back->ExecuteFunctionWithContext(NULL,NULL, call_arguments); } CPublic::ReadID_context->Exit();//退出Context //m_CallBackMap.erase(callbackId); ``` ``` } ...
  • STARTINGNEWTASK方式调用函数ABAP4_CALL_TRANSACTION,会打开一个新的窗口(session)运行tcode。 &amp;lt;img class="alignnone size-full wp-image-3252" src=...
  • CodeViz是《Understanding The Linux Virtual Memory Manager》(at Amazon,下载地址页尾)的作者 Mel Gorman 写的一款分析C/C++源代码中函数调用关系的open source工具(类似的open source软件有egypt、ncc)。...
  • 有时候要给别人讲函数的调用关系图,文字描述只是一维的,呈现得不直观,嘴去描述全靠听者脑袋中构建调用关系,讲的时间长了,或者调用关系复杂时,就会忘记。所以有必要使用二维的工具,这里介绍一下call ...
  • 前文回顾:《CIL写程序系列》 前言: ...但是那篇文章中,匹夫还是留下了一个小坑,那就是关于调用方法时,CIL究竟应该使用call呢还是应该使用callvirt呢?看上去是一个很肤浅的问题,哪个能...
  • call[Drive:}[Path] FileName从一个批处理...call调用指定标签时,运行完标签后所有命令后会回到调用时的位置继续运行命令,而不是简单的跳过中间命令应用程序start调用出错的,也可以call调用-------------...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,581
精华内容 1,032
关键字:

在用call调用