ksoap2 调用webservice 405错误

zhang80718 2024-04-25 11:01:50

使用soapui 能够正常调用。

 

但是用ksoap2就返回了webservice 405错误如下:

org.ksoap2.transport.HttpResponseException: HTTP request failed, HTTP status: 405

 

代码


import org.kobjects.base64.Base64;
import org.ksoap2.HeaderProperty;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class DoSoap
{

    public static String execSoap(String rxml, String methodName, String publicName, String language)
            throws IOException, XmlPullParserException
    {
        String endPoint = "http://284b7050o7.goho.co:29579/soap-wsdl/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC";
        String nameSpace = "http://www.adonix.com/WSS";
        String sageuser = BarcodeProperties.getSageuser();
        String sagepass = BarcodeProperties.getSagepass();
        String sagepool = BarcodeProperties.getSagepool();
        String sageadmin = sageuser + ":" + sagepass;
        CAdxCallContext cAdxCallContext = new CAdxCallContext();
        cAdxCallContext.codeLang = language;
        cAdxCallContext.poolAlias = sagepool;
        cAdxCallContext.requestConfig = "adxwss.trace.on=on&adxwss.beautify=true&adxwss.optreturn=XML";
        SoapObject soapObject = new SoapObject(nameSpace, methodName);
        PropertyInfo objekt = new PropertyInfo();
        objekt.setName("callContext");
        objekt.setValue(cAdxCallContext);
        objekt.setType(cAdxCallContext.getClass());
        soapObject.addProperty(objekt);
        soapObject.addProperty("publicName", publicName);
        soapObject.addProperty("inputXml", rxml);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(100);
        envelope.bodyOut = soapObject;
        List<HeaderProperty> headers = new ArrayList();
        headers.add(new HeaderProperty("Content-Type", "text/xml"));
        headers.add(new HeaderProperty("charset", "UTF-8"));
        headers.add(new HeaderProperty("Authorization", "Basic " + Base64.encode(sageadmin.getBytes())));
        HttpTransportSE transport = new HttpTransportSE(endPoint, SoapEnvelope.VER11);
        transport.debug = true;
        transport.call(null, envelope, headers);
        SoapObject object = (SoapObject)envelope.bodyIn;
        SoapObject xml = (SoapObject)object.getProperty(0);
        String result = xml.getProperty("resultXml").toString();
        System.out.println(result);
        File file = new File(publicName + ".txt");
        file.createNewFile();
        FileWriter writer = new FileWriter(file, true);
        writer.flush();
        writer.close();
        return result;
    }
    
    public static void main(String[] args)
    {
        String xml = "<PARAM>\r\n           <GRP ID=\"GRP1\">\r\n               <FLD NAME=\"VCRNUM\" TYPE=\"Char\">WF1012211YSMR0001</FLD>\r\n           </GRP>\r\n          <TAB ID =\"GRP2\"  SIZE =\"1\"> \r\n               <LIN NUM=\"1\">\r\n               <FLD NAME=\"VCRLIN\" TYPE=\"Integer\">1000</FLD>\r\n               <FLD NAME=\"VCHE\" TYPE=\"Integer\">1</FLD>\r\n               <FLD NAME=\"QTY\" TYPE=\"Decimal\">2</FLD>\r\n               <FLD NAME=\"LQTY\" TYPE=\"Decimal\">0</FLD>\r\n               <FLD NAME=\"LOC\" TYPE=\"CHAR\">EEE</FLD>\r\n               <FLD NAME=\"CREDAT\" TYPE=\"DATE\">2022/11/17</FLD>\r\n               </LIN>\r\n               <LIN NUM=\"2\">\r\n               <FLD NAME=\"VCRLIN\" TYPE=\"Integer\">2000</FLD>\r\n               <FLD NAME=\"VCHE\" TYPE=\"Integer\">1</FLD>\r\n               <FLD NAME=\"QTY\" TYPE=\"Decimal\">3</FLD>\r\n               <FLD NAME=\"LQTY\" TYPE=\"Decimal\">0</FLD>\r\n               <FLD NAME=\"LOC\" TYPE=\"CHAR\">RRR</FLD>\r\n               <FLD NAME=\"CREDAT\" TYPE=\"DATE\">2022/11/17</FLD>\r\n               </LIN>\r\n        </TAB>\r\n</PARAM>";
        try
        {
            String so = execSoap(xml, "run", "WSOPEMTK","CHI");
            System.out.println(so);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        catch (XmlPullParserException e)
        {
            e.printStackTrace();
        }
    }
}

 

ublic class BarcodeProperties
{

    private static String sageuser = "JKYH";
    private static String sagepass = "********";  //密码没有问题
    private static String sagepool = "YMES";



    public static String getSageuser()
    {
        return sageuser;
    }

    public static void setSageuser(String sageuser)
    {
        sageuser = sageuser;
    }

    public static String getSagepass()
    {
        return sagepass;
    }

    public static void setSagepass(String sagepass)
    {
        sagepass = sagepass;
    }

    public static String getSagepool()
    {
        return sagepool;
    }

    public static void setSagepool(String sagepool)
    {
        sagepool = sagepool;
    }
}

 

...全文
440 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2024-04-25
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/8094626, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

383,828

社区成员

发帖
与我相关
我的任务
社区描述
Java全栈社区
社区管理员
  • java李杨勇
  • 吃这么好
  • 阿莫 夕林
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧