.net作为服务端
JB中有自动生成的调用服务端webService的类!
叫importWebService,通过它找到你的wsdl文件,导入即可
然后自己写类,包括下面的代码.其中Calculator为webService名.... /*产生一个wsdl服务实例*/
CalculatorLocator locator = new CalculatorLocator();
/*定义一个解析wsdl方法的实例*/
CalculatorSoap soap;
/*调用wsdl服务实例的方法并转型为解析wsdl类型*/
soap = locator.getCalculatorSoap();
....
JB中有自动生成的调用服务端webService的类!
叫importWebService,通过它找到你的wsdl文件,导入即可
然后自己写类,包括下面的代码.其中Calculator为webService名.... /*产生一个wsdl服务实例*/
CalculatorLocator locator = new CalculatorLocator();
/*定义一个解析wsdl方法的实例*/
CalculatorSoap soap;
/*调用wsdl服务实例的方法并转型为解析wsdl类型*/
soap = locator.getCalculatorSoap();
....
解决方案 »
- Struts2报错
- 大神门 求解
- 经验1.5年,找工作在网上投简历好还是到人才市场找好
- 请指教如何 字母加数字 循环?
- Strust2.0Hibernate3.2和spring2.5整合出错
- 这有一个系统,请帮我运行下
- 请教经常用JAVA相关大软件朋友关于硬件配置的问题。谢谢。
- 求救!jdbc原来连接上SQLserver,但是改动ip之后,报错Error establishing socket!
- 对象的克隆与拷贝,复制的关系 ?
- 熟悉Jbuilder+weblogic开发CMP的朋友近来看看
- 谁知道hibernate的transactionManager怎么用
- 垃圾——Spring——太折磨人啦
.net做的服务,地址的后缀是不是也是?wsdl,用ksoap怎么调用呢?指教一下哈
搂主也太简明扼要了。.Net 的服务,想要看 WSDL 这样:
http://<host>:<port>/<path>/<fileName>?wsdl剩下的,……
??????? HTTP ?? SOAPAction ????
org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221)
org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128)
org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
javax.xml.parsers.SAXParser.parse(Unknown Source)
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
org.apache.axis.client.Call.invokeEngine(Call.java:2765)
org.apache.axis.client.Call.invoke(Call.java:2748)
org.apache.axis.client.Call.invoke(Call.java:2424)
org.apache.axis.client.Call.invoke(Call.java:2347)
org.apache.axis.client.Call.invoke(Call.java:1804)
org.apache.jsp.test_jsp._jspService(test_jsp.java:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
这个错误是什么意思呀?
{
URL httpurl = new URL(url);
HttpURLConnection httpConn = (HttpURLConnection)httpurl.openConnection();
httpConn.setRequestMethod( "POST" );
httpConn.setRequestProperty("Host",host);
httpConn.setRequestProperty("Content-Type",contype);
httpConn.setRequestProperty( "Content-Length",String.valueOf(postStr.length()));
httpConn.setRequestProperty("SOAPAction",soapaction);
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
PrintWriter out = new PrintWriter(httpConn.getOutputStream());
out.print(postStr);
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
{
result += inputLine+"\n";
}
in.close();
return result;
}
如果你会用java来调用java的WebService,那么调用.net的就不是问题了,反正有wsdl就行
而用java来生成WebService的客户端调用,最简单的办法,莫过于axis的WSDL2Java类了
http://blog.csdn.net/zlyperson/archive/2003/08/05/12494.aspx
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;import javax.xml.rpc.ParameterMode;public class WebServiceTest {
public WebServiceTest() {
}
public static void main(String args[])throws Exception{
Service service=new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress("http://xxxxx/services/XXXService");
call.setOperationName("testYourName");
call.addParameter("name",XMLType.XSD_STRING,ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING); String ret;
Object[] attributes=null; ret=
(String)call.invoke(new Object[]{"xxx"}); System.out.println(ret);
}
}
服务器未能识别 HTTP 标头 SOAPAction 的值:。
服务器未能识别 HTTP 标头 SOAPAction 的值:。Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
faultSubcode:
faultString: 服务器未能识别 HTTP 标头 SOAPAction 的值:。
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:服务器未能识别 HTTP 标头 SOAPAction 的值:。
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java
:719)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XML
DocumentFragmentScannerImpl.java:1685)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScanne
rImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at mytest.main(mytest.java:12) {http://xml.apache.org/axis/}hostname:LAI001服务器未能识别 HTTP 标头 SOAPAction 的值:。
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java
:719)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XML
DocumentFragmentScannerImpl.java:1685)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScanne
rImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at mytest.main(mytest.java:12)
好象是个call.setSOAPActionURI没有搞好可是我不会用wsdl2java工具!生产代理!
请求帮助!!!!!!!!!!!!
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
public class t2 {
public static void main(String[] args) {
long time=System.currentTimeMillis();
try {
String endpoint="http://127.0.0.1/WebService1/Service1.asmx";
Service service = new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://127.0.0.1/WebService1/Service1.asmx","HelloWorld"));
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://localhost/UserX/bizinfo/get_count");
String day = (String)call.invoke(new Object[] {});
System.out.println(day);
} catch (Exception e) {
System.err.println(e.toString());
}
System.out.println("Total time is: "+(System.currentTimeMillis()-time));
}
}
call.setSOAPActionURI("http://www.my.com/Rpc");.net services
[SoapRpcMethod(Action="http://www.my.com/Rpc",RequestNamespace="http://www.my.com/SU",ResponseNamespace="http://www.my.com/SU")]
[WebMethod(Description="This is a test XML Web service.")]
public int CalMarket()
{
.......
}