我试图在ReadyAPI中使用API,但它不适用于我。当我通过CURL执行请求时,它工作正常。任何帮助,将不胜感激。
以下是通过Curl的请求格式示例,结尾部分是URL编码:
curl -k -X POST https://myHost.test/999299/profile/SAML2/SOAP/https%3A%2F%2FmyHost.test-999299 -H
"Content-Type: text/xml" -d '{
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
body
</S:Body>
</S:Envelope>
}'
这会返回我期望的正确回复。但是,当我在SoapUI中使用它并从URL输入新的REST服务时,它删除了URL编码并形成如下请求:
POST https://myHost.test/999299/profile/SAML2/SOAP/https://myHost.test-999299 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml
Content-Length: 555
Host: myHost.test
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_102)
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
body
</S:Body>
</S:Envelope>
此请求返回404 Not Found。不确定URL编码是否重要,但是当我手动添加它时,它会给我一个内部服务器错误。我在soapui请求中遗漏了什么。
答案 0 :(得分:0)
原来我需要:
将资源字符串更改回URL编码字符串https%3A%2F%2FmyHost.test-999299
不得不把我的身体包在括号中,删除空格,换行等等。这给了我一个正确的回应。
{<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body>body</S:Body></S:Envelope>}
答案 1 :(得分:0)
如果有其他人弄明白:对我来说这是公司的代理设置,&#34; localhost&#34;没有工作,但&#34; 127.0.0.1&#34;工作得非常好。