JAVA通过soap访问webservice
最近我在写一个程序跟别的程序做接口,对方提供webservice服务,但对方没有提供wsdl文件,只给了一个soap的url:http://121.23.127.10:1...
最近我在写一个程序跟别的程序做接口,对方提供webservice服务,但对方没有提供wsdl文件,只给了一个soap的url:http:// 121.23.127.10:1920///cms/soap,还告诉interface:AM_SOAP,method:AM_GET,以及一个JavaScript写的访问webservice的例子,代码如下:
function getdata() {
var xmlHttp;
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
//soap的URL
var url = "http:// 121.23.127.10:1920///cms/soap";
//xml格式的字符串请求信息
var query = "<AM_Get><userid>admin</userid>";
query = query + "<password>admin</password>";
query = query + "<object>ManagedSystem</object>";
query = query + "</AM_Get>"
//设置回调函数
xmlHttp.onreadystatechange = checkCall(){
xmlDoc = xmlHttp.responseXML;
alert(xmlDoc);
}
xmlHttp.open("POST",url,true);
xmlHttp.setRequestHeader("MethodName", "AM_Get");//方法名
xmlHttp.setRequestHeader("InterfaceName", "AM_SOAP");//接口名
xmlHttp.setRequestHeader("MessageType", "Call");//这个不知道什么意思
xmlHttp.setRequestHeader("Content-Type", "text/xml");//设置返回格式
xmlHttp.send(query);//发送请求
}
现在我想用java类来实现这个方法,发送一个xml格式的String字符串做参数,访问webservice程序,但是不是怎么做,希望各位大侠帮帮指点。 展开
function getdata() {
var xmlHttp;
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
//soap的URL
var url = "http:// 121.23.127.10:1920///cms/soap";
//xml格式的字符串请求信息
var query = "<AM_Get><userid>admin</userid>";
query = query + "<password>admin</password>";
query = query + "<object>ManagedSystem</object>";
query = query + "</AM_Get>"
//设置回调函数
xmlHttp.onreadystatechange = checkCall(){
xmlDoc = xmlHttp.responseXML;
alert(xmlDoc);
}
xmlHttp.open("POST",url,true);
xmlHttp.setRequestHeader("MethodName", "AM_Get");//方法名
xmlHttp.setRequestHeader("InterfaceName", "AM_SOAP");//接口名
xmlHttp.setRequestHeader("MessageType", "Call");//这个不知道什么意思
xmlHttp.setRequestHeader("Content-Type", "text/xml");//设置返回格式
xmlHttp.send(query);//发送请求
}
现在我想用java类来实现这个方法,发送一个xml格式的String字符串做参数,访问webservice程序,但是不是怎么做,希望各位大侠帮帮指点。 展开
1个回答
展开全部
我做过的一个例子:
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import com.yupont.utils.XMLUtil;
public class ServiceTest {
public String callSGCCService(String operationName,String inputXML,String serviceName,String serverContextRoot)
{
StringBuilder result=null;
try {
String endpoint = serverContextRoot+"/services/"+serviceName;
Service service = new Service();// 创建一个服务(service)调用(call)
Call call = (Call)service.createCall();// 通过service创建call对象
call.setTargetEndpointAddress(new java.net.URL(endpoint));// 设置service所在URL
call.setOperationName(new QName("http://service.yupont.com",operationName));
call.setUseSOAPAction(true);
String result1 = (String)call.invoke(new Object[]{inputXML});
System.out.println(result1);
result=new StringBuilder(result1);
result.append("@@@@@");
result.append(XMLUtil.getNodeTxtByNodeName(XMLUtil.strToXML(result1).getRootElement(), "URL"));
}
catch (Exception e)
{
System.err.println(e.toString());
}
return result.toString();
}
}
你可以参考一下
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import com.yupont.utils.XMLUtil;
public class ServiceTest {
public String callSGCCService(String operationName,String inputXML,String serviceName,String serverContextRoot)
{
StringBuilder result=null;
try {
String endpoint = serverContextRoot+"/services/"+serviceName;
Service service = new Service();// 创建一个服务(service)调用(call)
Call call = (Call)service.createCall();// 通过service创建call对象
call.setTargetEndpointAddress(new java.net.URL(endpoint));// 设置service所在URL
call.setOperationName(new QName("http://service.yupont.com",operationName));
call.setUseSOAPAction(true);
String result1 = (String)call.invoke(new Object[]{inputXML});
System.out.println(result1);
result=new StringBuilder(result1);
result.append("@@@@@");
result.append(XMLUtil.getNodeTxtByNodeName(XMLUtil.strToXML(result1).getRootElement(), "URL"));
}
catch (Exception e)
{
System.err.println(e.toString());
}
return result.toString();
}
}
你可以参考一下
更多追问追答
追问
请问这4个参数都是什么意思?
还有call.setOperationName(new QName("http://service.yupont.com",operationName));这句话什么意思,其中的http://是什么?
追答
Service service = new Service();// 创建一个服务(service)调用(call)
Call call = (Call)service.createCall();// 通过service创建call对象
call.setTargetEndpointAddress(new java.net.URL(endpoint));// 设置service所在URL
call.setOperationName(new QName("http://service.yupont.com",operationName));
call.setUseSOAPAction(true);
String result1 = (String)call.invoke(new Object[]{inputXML});
这段是主要的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询