327,339
社区成员
发帖
与我相关
我的任务
分享
使用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; } }