当前位置:编程学习 > VB >>

关于一个用soap访问webservice的问题~~~~~~~~~

大侠帮帮忙,快急死了~~~~

我用soapui测试的对方接口没有问题
测试代码为:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:Add_StretchDrawdata>
         <tem:intBeamPlantId>122</tem:intBeamPlantId>
         <!--Optional:-->
         <tem:strTaskName>eee</tem:strTaskName>
         <!--Optional:-->
         <tem:strDeviceNum>eee</tem:strDeviceNum>
         <!--Optional:-->
         <tem:strBeamName>eee</tem:strBeamName>
         <!--Optional:-->
         <tem:strSteelBunch>eee</tem:strSteelBunch>
         <!--Optional:-->
         <tem:strStretchDrawStage>eee</tem:strStretchDrawStage>
         <!--Optional:-->
         <tem:strJackNum1>eee</tem:strJackNum1>
         <!--Optional:-->
         <tem:strJackNum2>eee</tem:strJackNum2>
         <tem:dblDesignPull>125</tem:dblDesignPull>
         <tem:dblDesignElongate>123</tem:dblDesignElongate>
         <tem:dblCurrentPull1>124</tem:dblCurrentPull1>
         <tem:dblCurrentElongate1>124</tem:dblCurrentElongate1>
         <tem:dblCurrentPull2>124</tem:dblCurrentPull2>
         <tem:dblCurrentElongate2>124</tem:dblCurrentElongate2>
         <!--Optional:-->
         <tem:strStretchDrawTime>2001/0101</tem:strStretchDrawTime>
      </tem:Add_StretchDrawdata>
   </soapenv:Body>
</soapenv:Envelope>

然后自己在VB中通过程序访问,就出现问题,代码如下:

Private Sub Command1_Click()

 Dim Serializer As SoapSerializer30
Dim reader As SoapReader30
Dim Connector As SoapConnector30


    'namespace
    Const SoapAction = "http://tempuri.org/Add_StretchDrawdata"
    'wsdl地址
    Const END_POINT_URL = "XX"
    '新建一个connector对象
    Set Connector = New HttpConnector30
    Connector.Property("EndPointURL") = END_POINT_URL
    Connector.Connect
    
    Connector.Property("SoapAction") = SoapAction
'在weblogic中我们使用的是basic认证,在这里添加用户名和密码
   

    Connector.BeginMessage
    
    Set Serializer = New SoapSerializer30
    Serializer.Init Connector.InputStream
    Serializer.startEnvelope
    Serializer.startHeader
    Serializer.endHeader

    Serializer.startBody
    '在这里添加传入的参数,有两个参数NAME和AGE,前面的是方法名,后面的为namespace,在wsdl中标红色的部分。
    Serializer.startElement "Add_StretchDrawdata"
        
        Serializer.startElement "intBeamPlantId", "http://tempuri.org/"
            Serializer.writeString 1234
        Serializer.endElement
        
        Serializer.startElement "strTaskName"
            Serializer.writeString "1-3"
        Serializer.endElement
        
        Serializer.startElement "strDeviceNum"
            Serializer.writeString "www"
        Serializer.endElement
        
        Serializer.startElement "strBeamName"
            Serializer.writeString "ddd"
        Serializer.endElement
        
        Serializer.startElement "strSteelBunch"
            Serializer.writeString "strSteelBunch"
        Serializer.endElement
        
        Serializer.startElement "strStretchDrawStage"
            Serializer.writeString "strStretchDrawStage"
        Serializer.endElement
        
        Serializer.startElement "strJackNum1"
            Serializer.writeString "strJackNum1"
        Serializer.endElement
        
        Serializer.startElement "strJackNum2"
            Serializer.writeString "strJackNum2"
        Serializer.endElement
        
        Serializer.startElement "dblDesignPull"
            Serializer.writeString 1760
        Serializer.endElement
        
        Serializer.startElement "dblDesignElongate"
            Serializer.writeString 80
        Serializer.endElement
        
         Serializer.startElement "dblCurrentPull1"
            Serializer.writeString 1760
        Serializer.endElement
        
         Serializer.startElement "dblCurrentElongate1"
            Serializer.writeString 81
        Serializer.endElement
         
         Serializer.startElement "dblCurrentPull2"
            Serializer.writeString 1760
        Serializer.endElement
         
         Serializer.startElement "dblCurrentElongate2"
            Serializer.writeString 79
        Serializer.endElement
         
         Serializer.startElement "strStretchDrawTime"
            Serializer.writeString "2000/01/01"
        Serializer.endElement
          
                
    Serializer.endElement
    
    Serializer.endBody
    Serializer.endEnvelope
    
       
Serializer.Finished
  
   'Label1 = CStr(Connector.InputStream.)
Connector.EndMessage

'reader读入返回的xml对象

    
    Set reader = New SoapReader30
    reader.Load Connector.OutputStream
    
    If Not reader.Fault Is Nothing Then
        MsgBox reader.faultstring.Text, vbExclamation
    Else
      MsgBox reader.Body.xml

End If

    
  End Sub

vb不报错,但是对方的返回值为-1,错误,错误提示是什么无法将NULL值插入到几个字段,可这个表没有这几个字段,表也是一个独立表,高手帮帮忙~~~ OverLoad?????Serializer.startElement "intBeamPlantId", "http://tempuri.org/"
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,