delhi调用java写的webservice,有的时候报错:
Received content of invalid Content-Type setting:text/html - SOAP expects "text/xml"
这个是时有时无,
查了一下,都是说delphi写的websrvice里面的 ISAPIThreadPool,ISAPIApp,调换一下位置就好了(说是他们有同门函数,有个处理线程有bug),
但我这个是java写的webservice,用weblogic部署的,jdk1.4,数据库是9i,后面升级到10g了,最开始在java后台看到得错误时ava.sql.SQLException: 无效的 SQL 类型
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:76)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3361)
        at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:131)
        at wserver.base.bean.BaseGeneralBean.executeSqlToSelect(BaseGeneralBean.java:617)
        at wserver.base.bean.BaseGeneral_g3lo5s_EOImpl.executeSqlToSelect(BaseGeneral_g3lo5s_EOImpl.java:254)
        at wserver.base.bean.BaseGeneral_g3lo5s_EOImpl_CBV.executeSqlToSelect(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at weblogic.webservice.component.slsb.SLSBInvocationHandler.invoke(SLSBInvocationHandler.java:88)
        at weblogic.webservice.core.handler.InvokeHandler.handleRequest(InvokeHandler.java:104)
        at weblogic.webservice.core.HandlerChainImpl.handleRequest(HandlerChainImpl.java:143)
        at weblogic.webservice.core.DefaultOperation.process(DefaultOperation.java:549)
        at weblogic.webservice.server.Dispatcher.process(Dispatcher.java:204)
        at weblogic.webservice.server.Dispatcher.doDispatch(Dispatcher.java:176)
        at weblogic.webservice.server.Dispatcher.dispatch(Dispatcher.java:96)
        at weblogic.webservice.server.WebServiceManager.dispatch(WebServiceManager.java:100)
        at weblogic.webservice.server.servlet.WebServiceServlet.serverSideInvoke(WebServiceServlet.java:297)
        at weblogic.webservice.server.servlet.ServletBase.doPost(ServletBase.java:498)
        at weblogic.webservice.server.servlet.WebServiceServlet.doPost(WebServiceServlet.java:267)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7047)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
        at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
        at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)是sql类型无效不是语句无效
java后台就换了jdbc driver 由原来的class12.jar升级到了ojdbc.jar,这下前台delphi报错时,后台连错误都不出了,
但delphi前台显示的错误还是一样,也还是时有是无的.
我跟踪delphi的就是在客户端调用java后台方法那里报错了.//webserport=interface(IInvokable)
//rp就是webserport的实例,method是一个客户端注册过了的方法.
rp.method();大家帮我看看,说说思路也好,明天我再加100分.

解决方案 »

  1.   

    Received content of invalid Content-Type setting:text/html - SOAP expects "text/xml" 
    这个错误是说返回的内容的Content-Type设置为text/html,而SOAP期望为text/xml,我觉得可能是webservice那边的问题,想办法指定Content-Type为text/xml一下
      

  2.   

    看错误意思应该是没有得到想要的格式,但这个是时有是无,又很难说得通,有没可能是客户端这边有没有类似delphi的webservice的thread问题呢,我在google和baidu搜到的都只是说delphi开发的webservice服务端造成的.
      

  3.   

    我想java本身开发的webservice应该是没有类似delphi开发webservice服务端的bug,要有的话,应该网上就很多了(java确实流行),所以我想因为之前这样的错误很少人碰到,所以大家都只是找到了一个解决方法,那就是修改服务端的顺序,就没有深究在客户端是不是也存在类似的问题了,希望对delphi的webservice了解得比较细致的大虾说一下
      

  4.   

    http://topic.csdn.net/u/20100121/11/d6f3f22d-1613-4b1a-b4af-6da7314575aa.html?44687
    咱说话要算数,这是另外100分的链接.大家帮我顶顶吧,顶顶也有份
      

  5.   

    delphi跟踪到
    //webserport=interface(IInvokable)
    //rp就是webserport的实例,method是一个客户端注册过了的方法.
    rp.method();
    这里已经是调用delphi本身的方法了,,错误就是在里面抛出的,而webservice都没抛出错误
      

  6.   

    delphi内部具体如何处理webservice的,抛出这样的错误一般是什么样的情况,网络条件?线程?还是编码方式?
      

  7.   

    1.方便的话,你把WSDL放到公网上
    2.使用高版本的Delphi进行一下测试,D7调用Webservice的确会出现一些奇怪的问题
      

  8.   

    WSDL不太方便,不过我打开了URL,用同样的SQL测试过,没有问题,而且在Delphi前台调用的时候同样的查询条件,也是有时报错有时不报.
    高版本的D不知道哪版好点,因为一直用的是D7,而且程序里有用到第三方控件还有一些自己的控件
      

  9.   

    我用delphi 7成功实现了调用C#写的webservice。