首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTPBuilder &会话ID

HTTPBuilder &会话ID
EN

Stack Overflow用户
提问于 2017-09-30 01:50:02
回答 2查看 1.1K关注 0票数 0

我有以下代码连接到REST服务,进行身份验证,检索会话ID,然后发出传递会话ID的进一步请求以进行身份验证。初始请求工作,我得到一个HTTP200OK加上响应中的会话ID,但是当我尝试在头中传递会话ID的第二个请求时,我得到

捕捉到的:groovyx.net.http.HttpResponseException:糟糕的请求

我知道使用类和try / catch等方法可以更好地编写脚本。我仍然在学习java和groovy,所以我从尝试在同一个类中完成所有事情开始。

任何帮助都很感激。

代码语言:javascript
复制
import groovyx.net.http.HTTPBuilder
import groovyx.net.http.URIBuilder
import static groovyx.net.http.Method.POST
import static groovyx.net.http.ContentType.*

def url = 'https://1.1.1.1/web_api/'
def uri = new URIBuilder(url)

String CHKPsid

uri.path = 'login'
def http = new HTTPBuilder(uri)
http.ignoreSSLIssues()


http.request(POST,JSON ) { req ->
headers.'Content-Type' = 'application/json'
body = [
        "user":"username",
        "password":"password"
]
    response.success = { resp, json ->
        println (json)
        CHKPsid = (json.sid)
        println "POST Success: ${resp.statusLine}"
    }
}

uri.path = 'show-changes'
http.request(POST,JSON ) { req ->
headers.'Content-Type' = 'application/json'
headers.'X-chkp-sid' = '${CHKPsid}'
body = [
        "from-date"   : "2017-02-01T08:20:50",
        "to-date"     : "2017-10-21"
  ]
    response.success = { resp, json ->
        println (json)
        println "POST Success: ${resp.statusLine}"
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-30 22:44:12

串内插不适用于单引号(或三重单引号)。当groovy计算'${CHKPsid}' (单引号)时,它的值将是${CHKPsid} (此字符串)。为了使用变量的值,应该使用双引号:"${CHKPsid}",或者仅仅使用变量:headers.'X-chkp-sid' = CHKPsid

所以它的输出:

代码语言:javascript
复制
String CHKPsid = "abc123"
println '${CHKPsid}'
println "${CHKPsid}"

将是:

代码语言:javascript
复制
${CHKPsid}
abc123

为了快速测试服务器接收到的内容,可以使用httpbin.orgrequestb.in

票数 1
EN

Stack Overflow用户

发布于 2017-10-02 00:00:44

因此,除了会话ID值的正确赋值之外,我还发现,即使在uri、头和体更改后,第二次调用相同的HTTPbuilder - http.request也是问题所在。侦听服务器仍然将其视为同一个登录API调用的一部分。我的解决方案/解决方案是用不同的名称定义第二个HTTPbuilder,这现在起作用了。我很想知道这是否是正常行为,以及其他人是如何处理这一问题的。谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46498842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档