如何使用SoapUI访问Twitter API?

Cha*_*Gan 5 twitter soap

我使用下面的代码从SoapUI运行,但我仍然得到一个缺少的属性异常:

类请求不存在此类属性

我该如何解决这个问题?

def project = com.eviware.soapui.model.support.ModelSupport.getModelItemProject( request ) 

// initialize OAuth consumer     
def consumer = new oauth.signpost.commonshttp.CommonsHttpOAuthConsumer( project.getPropertyValue( "oauth_consumer_key" ), project.getPropertyValue( "oauth_consumer_secret" ));    
consumer.setTokenWithSecret( project.getPropertyValue( "oauth_access_token" ), project.getPropertyValue( "oauth_access_token_secret" )); 

// sign the request     
consumer.sign( context.httpMethod ) 
Run Code Online (Sandbox Code Playgroud)

kgd*_*ouz 1

编辑:查看了 API 指南,看起来您有以下内容:

def project = com.eviware.soapui.model.support.ModelSupport.getModelItemProject( request ) 
Run Code Online (Sandbox Code Playgroud)

然后你打电话project.getPropertyValue。根据API指南,没有调用这样的getPropertyValue方法com.eviware.soapui.model.support.ModelSupport

有一个名为com.eviware.soapui.model.project的接口。除非您从接口 com.eviware.soapui.model.TestPropertyHolder继承,否则您不会获得getPropertyValue.


为了帮助解决您的问题,您需要调试代码。根据第一行“请求”的结果,您很可能没有属性oauth_consumer_key, oauth_consumer_secret,oauth_access_tokenoauth_access_token_secret。输出内容request(或者只是在 SoapUI 中设置一个断点,def project然后验证是否具有该属性)。

否则,有几种替代方法可以解决您的问题。这些解决方案旨在将 OAuth 与 SoapUI 结合使用。

尝试以下操作:

def gu = new com.eviware.soapui.support.GroovyUtils( context );

def xml = gu.getXmlHolder( 'Authenticate - Default#Response' );
def token = xml.getNodeValue( '/auth/token' );
log.info( 'Got token: ' + token );

def suite = context.testCase.testSuite;
suite.setPropertyValue( 'auth_token', token );
log.info( 'Saved auth_token to suite.' );
Run Code Online (Sandbox Code Playgroud)

这段代码的好处是“令牌永久保留在 TestSuite 属性中。这具有允许我在身份验证测试后运行测试的副作用/好处”。

如果这不起作用,这里有一篇很棒的文章解释了如何针对 Vimeo 进行 OAuth;这应该与 Twitter OAuth 非常相似。

这些解决方案都不需要 SoapUI Pro。