我正在向一个线程服务器发送请求,我正在尝试匹配该网址。
这是发出的请求:/user/test/?and=query
我写了以下正则表达式:
stubFor(post(urlPathMatching("/user/test/\\?(and)\\=([a-z]*)"))
问题是当我尝试匹配“?”时当我使用一个反斜杠来捕获文字字符时,我在Java中遇到错误说:
"Illegal Escape Character"
我尝试解决此问题的方法: 我知道解决方案是使用第二个反斜杠来捕获“?”像这样:“\?”,但是当我发送请求时,我收到一个错误,说网址不匹配,因为这是与soap ui发送的原始请求相匹配的请求:
/user/test/\?(and)\=([a-z]*)
有人可以帮我解决这个问题吗?
编辑:第二次尝试 我试过用点符号来表示“?”和“=”符号。我在正则表达式测试器上对它进行了测试并检查了,但是,它仍然说这个url在soap ui上不匹配。
正则表达式:stubFor(post(urlPathMatching("/user/test/.*(and).*([a-z]*)")).atPriority(1)
网址不匹配:/user/test/.*(and).*([a-z]*)
答案 0 :(得分:0)
使用urlPathMatching()
时,请勿将查询参数放在url中。该方法仅适用于urlEqualTo()
。
相反,您应该使用withQueryParam()
分别指定参数,因此存根设置应为:
stubFor(post(urlPathMatching("/user/test/")).withQueryParam("and", matching("[a-z]*")));
答案 1 :(得分:-1)
\\
只是逃避\,你应该再添加一个\吗?逃避?
像这样:
stubFor(post(urlPathMatching("/user/test/\\\?(and)\\=([a-z]*)"))