将字符串数组发送到WSDL端点?

时间:2015-07-08 21:26:35

标签: vb.net web-services wsdl

我正在尝试连接到网络服务。文档(或缺少)在这里:

http://portal.smartertools.com/services2/

http://portal.smartertools.com/Services2/svcTickets.asmx

我正在尝试调用GetTicketsBySearch。 Args SearchCriteria是一个String(),它表示“一个'key = value'对列表,用于指示搜索参数。 要按自定义字段进行搜索,请将字段的ID作为键传递,将搜索字词作为值传递(即:1 ='value')

我的代码:

        Dim args As New ST.ArrayOfString
        args.Add("IsOpen='true'")
       Dim CallWebService As New ST.svcTicketsSoapClient
        Dim sGetValue As ST.TicketInfoArrayResult = CallWebService.GetTicketsBySearch(userName, Password, args)

我无法获得任何结果返回。我试过以不同的方式传递字符串。即:'IsOpen ='真; 'IsOpen'='true'等......

1 个答案:

答案 0 :(得分:0)

希望这会帮助遇到这个特定问题的其他人。

  • 访问smartertools端点的用户帐户必须分配“代理”角色。如果只是将其分配给管理员角色或经理角色,则无法使用。这是愚蠢的,因为代理角色需要使用许可证,因此您实际上需要使用许可证来访问其Web服务。
  • 如果用户帐户没有权限,则不会收到错误,也不会产生任何结果。
  • 正确的格式是'example:isOpen = true
  • 您无法从GetTickets获取故障单的说明或“正文”。他们的文件不正确。您可以使用我下面的代码示例获取正文。

    '// Loop through your ticket results, or similar
        Dim _ticket As ST.TicketInfo
        _ticket = CType(e.Item.DataItem, ST.TicketInfo)
        Dim CallWebService As New ST.svcTicketsSoapClient
        Dim sGetValue As ST.TicketPartInfoArrayResult = CallWebService.GetTicketConversationPartList(userName, Password, _ticket.ID.tostring())
    
        '// Just grab the first, if that is all you need
        For Each p In sGetValue.Parts.ToList()
            Dim PVal As ST.TicketMessageBodyResult = CallWebService.GetTicketMessagePlainText(userName, Password, p.PartId)
            Result(PVal.messageBody)
        Next