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