标签: groovyws

在groovy中使用的标准SOAP库是什么?

我只需要一个SOAP客户端来进行远程调用,但我有点像一个Groovy菜鸟.根据Groovy文档,不推荐使用标准的Groovy SOAP库.相反,文档指向更新的库:GroovyWS.

不幸的是,GroovyWS有一个警告说该项目处于休眠状态,然后它指向Groovy WSLite.

实际上,Groovy WSLite似乎仍在积极开发中,但与之前的2个库相比,并不是非常"Groovy-ish".wslite每个人都在使用什么?

groovy soap groovyws

14
推荐指数
1
解决办法
1万
查看次数

GroovyWS和复杂的请求

我遇到了使用GroovyWS发送复杂请求的问题.

这是soapUI生成的示例请求:

<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:dex="http://www.temp.com/com/dex" 
>
 <soapenv:Header/>
 <soapenv:Body>
  <dex:executeRequest>
     <!--Optional:-->
     <a>?</a>
     <!--Optional:-->
     <b>?</b>
     <!--Optional:-->
     <parameters>
        <!--Zero or more repetitions:-->
        <parameter>
           <!--Optional:-->
           <key>?</key>
           <!--Optional:-->
           <value>?</value>
        </parameter>
     </parameters>
     <!--Optional:-->
     <c>?</c>
     <!--Optional:-->
     <d>?</d>
  </dex:feedrequest>
 </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

一段时髦的代码:

def proxy = webService.getClient(grailsApplication.config.ws.endpoint);
proxy.processdRequest(?);
Run Code Online (Sandbox Code Playgroud)

那么我应该通过什么而不是.

谢谢你的帮助.

-vova.

grails groovy web-services groovyws

8
推荐指数
2
解决办法
2345
查看次数

如何在groovy中使用cxf制作地图?

GroovyWS是一个内部使用CXF的框架.我想提出如下要求:

<param2 xsi:type="ns2:Map">
    <item xsi:type="ns2:Map">
        <key xsi:type="xsd:string">param1</key>
        <value xsi:type="xsd:string">param2</value>
    </item>
</param2>
Run Code Online (Sandbox Code Playgroud)

目前我正在尝试通过grails服务执行此操作,如下所示:

def proxy = new WSClient("http://xyz", this.class.classLoader)
proxy.initialize()

proxy.client.invoke("call", new HashMap<String, String>())
Run Code Online (Sandbox Code Playgroud)

这使

javax.xml.bind.JAXBException
class java.util.HashMap nor any of its super class is known to this context.
Run Code Online (Sandbox Code Playgroud)

我甚至试过[:]和东西,但不要让它工作.

grails groovy soap cxf groovyws

6
推荐指数
1
解决办法
368
查看次数

使用CXF(实际上是GroovyWS),如何使用一个具有文本节点的子节点生成SOAP标头?

我正在为.net SOAP服务创建一个Groovy客户端,它需要一个如下所示的soap标头:

<soap:Header>
    <HeaderInfo xmlns="http://foo.bar.com/ns">
        <token>abc-unique-token</token>
    </HeaderInfo>
</soap:Header>
Run Code Online (Sandbox Code Playgroud)

我找到了为CXF消息添加标题的常见问题,它让我几乎到了那里,但并不完全.他们为选项4提供的示例如下所示:

    List<Header> headers = new ArrayList<Header>()
    Header header = new Header(new QName("http://foo.bar.com/ns", "HeaderInfo"), 
        "abc-unique-token", new JAXBDataBinding(String.class))
    headers.add(header)

    proxy.client.getRequestContext().put(Header.HEADER_LIST, headers)
Run Code Online (Sandbox Code Playgroud)

使用此代码,我可以这样做:

<soap:Header>
    <HeaderInfo xmlns="http://foo.bar.com/ns">
        abc-unique-token
    </HeaderInfo>
</soap:Header>
Run Code Online (Sandbox Code Playgroud)

但是"HeaderInfo"节点缺少子"令牌"节点以包围"abc-unique-token",我不知道如何在那里获取它.

是否有一些简单的事情我可以传递给Header构造函数来创建该节点?

一篇单独的文章讨论了使用不同的技术,但是当我尝试使用它时,这会在SoapFactory周围抛出错误.

我发现的许多其他东西需要创建一些扩展AbstractPhaseInterceptor类的东西,带有一堆额外的代码,当我想要的是如此接近:).

groovy web-services cxf header groovyws

3
推荐指数
1
解决办法
1813
查看次数

使用 PUT 使用 Groovy 的 HTTP Builder 更新 JSON 数据

我需要使用 Groovy HTTP Builder 更新 Zendesk Tickets。我使用以下代码

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0-RC2' )
import java.util.Properties;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import groovyx.net.http.*;
import static groovyx.net.http.Method.*;
import groovy.json.*;
import groovyx.net.http.ContentType;

def jsonBuilder = new groovy.json.JsonBuilder();
class MyTicket
{
    def subject
}

        def myTicket = new MyTicket( 
        subject: 'xyz'.toString()
        )
def ticketList=[myTicket]
jsonBuilder(ticket:ticketList)


println(jsonBuilder)

def authSite = new HTTPBuilder('https://{subdomain}.zendesk.com/api/v2/tickets/{ticketid}.json');
authSite.auth.basic 'username', 'password';
authSite.request( Method.PUT, ContentType.JSON )
 {  req ->
 uri.path = ''https://{subdomain}.zendesk.com/api/v2/tickets/{ticketid}.json'';
                requestContentType = ContentType.JSON;
                headers.Accept = 'application/json';
                body =[jsonBuilder]

                response.success …
Run Code Online (Sandbox Code Playgroud)

groovy groovy-console groovyws zendesk

1
推荐指数
1
解决办法
5844
查看次数

标签 统计

groovy ×5

groovyws ×5

cxf ×2

grails ×2

soap ×2

web-services ×2

groovy-console ×1

header ×1

zendesk ×1