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;
    }
}

 

...全文
129 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 04-25
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/8094626, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态

327,339

社区成员

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

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