当前位置: 代码迷 >> J2EE >> java调用php webservice接口有关问题
  详细解决方案

java调用php webservice接口有关问题

热度:79   发布时间:2016-04-22 00:36:43.0
java调用php webservice接口问题
利用axis调用代码:
Java code
import javax.xml.namespace.QName;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.description.OperationDesc;import org.apache.axis.description.ParameterDesc;public class TestInteface2 {    public static void main(String[] args) throws Exception {        String url = "省略";                String method = "method";        String result = getOrderInfo(url,"domain",method, null);        System.out.println(result);    }        public static String getOrderInfo(String url, String domain, String method, String req) throws Exception {        OperationDesc oper = new OperationDesc();        ParameterDesc param = new ParameterDesc(            new QName(domain, "xmlDoc"),            ParameterDesc.IN,             new QName("http://www.w3.org/2001/XMLSchema", "string"),             String.class,             false,            false        );        ParameterDesc param2 = new ParameterDesc(            new QName(domain, "xmlDoc"),            ParameterDesc.IN,             new QName("http://www.w3.org/2001/XMLSchema", "string"),             String.class,             false,            false        );        ParameterDesc param3 = new ParameterDesc(            new QName(domain, "xmlDoc"),            ParameterDesc.IN,             new QName("http://www.w3.org/2001/XMLSchema", "string"),             String.class,             false,            false        );                param.setOmittable(true);        oper.addParameter(param);        oper.addParameter(param2);        oper.addParameter(param3);        oper.setReturnType(            new QName("http://www.w3.org/2001/XMLSchema", "string")        );                Service service = new Service();        Call call = (Call) service.createCall();        call.setTargetEndpointAddress(url);        call.setOperation(oper);        call.setSOAPActionURI(domain+method);        call.setOperationName(new QName(domain, method));                try {                    Object resp = call.invoke(new Object[] {"1","2","3"});            if (resp instanceof java.rmi.RemoteException) {                throw (java.rmi.RemoteException)resp;            }            else {                try {                    return (String) resp;                } catch (Exception _exception) {                    return (String) org.apache.axis.utils.JavaUtils.convert(resp, String.class);                }            }        } catch (org.apache.axis.AxisFault axisFaultException) {            throw axisFaultException;        }    }}

运行结果:
有正常返回值。但总不是期望得到的,就比如我要按学号查某学生的的信息,总是返回学号不存在,但可以确定学号是存在的。但用.net去调用却一切正常。搞不明白问题出哪。

------解决方案--------------------
call.setSOAPActionURI(domain+method);
改成
 call.setSOAPActionURI(domain+"/"+method);
  相关解决方案