我正在调用WCF服务方法并尝试读取以下事件的响应 - function GeneralEvents_OnWebServiceResponse(Sender,Response,Helper,ResponseInfo) 当我将Response.Text或Response.xml值显示在日志中时(在代码中进一步使用它们之前),分别显示以下内容 -
Response.Text http://asp.net/ApplicationServices/v200/AuthenticationService/LoginResponseurn:uuid:17d10877-6514-4056-bb7f-a4c1510279c5true
Response.xml
<?xml version="1.0" ?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://asp.net/ApplicationServices/v200/AuthenticationService/LoginResponse</a:Action>
<a:RelatesTo>urn:uuid:17d10877-6514-4056-bb7f-a4c1510279c5</a:RelatesTo>
</s:Header>
<s:Body>
<LoginResponse xmlns="http://asp.net/ApplicationServices/v200">
<LoginResult>true</LoginResult>
</LoginResponse>
</s:Body>
</s:Envelope>
但是,在SilverLight应用程序的Web服务上运行此示例的Fiddler工具中显示的响应包含有关cookie的详细信息 -
Cache-Control: private
Content-Length: 189
Content-Type: application/soap+msbin1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Set-Cookie: .ASPXAUTH=9A321F31B667231925A19F3F433C24529CD9DE9283745DF8C515E12A679C63E3A0B59A7054B6157E24279965080981E9BCD632100E23B5CFDC02455BA4193552C67B2FC6E86EF258E205E04D68AF15FAF80223DE231E3C720DC295B89458888212EF1CBEC288FE5FFC70D7E22A5F932868263AA15B8D75EAAF4581652389798193D1FA216BBC8492FABF0F29906B3A5F; expires=Thu, 18-Sep-2014 14:18:22 GMT; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Tue, 19 Aug 2014 14:18:22 GMT
如何将此cookie提取到TestComplete脚本中,以便作为后续服务调用标题的一部分进行传递?请建议。
TestComplete版本10.10 SilverLight 5.0版
-Siddharth
答案 0 :(得分:1)
更新:因此流量是二进制SOAP(application / soap + msbin1)。我不确定XMLHTTPRequest
可以处理它。
既然您正在使用Fiddler,也许您可以使用Fiddler为TestComplete的WebServices调用进行关联?
但我没有尝试过,所以我不知道它是否会起作用。
WebServices插件不允许您获取响应标头。
如果您以其他方式调用Web服务,则只能使用XMLHTTPRequest来获取响应标头。
function Test()
{
var strUrl = "http://endpoint_URL";
var oHTTP = Sys.OleObject("MSXML2.XMLHTTP");
oHTTP.open("POST", strUrl, false);
oHTTP.setRequestHeader("Content-Type", "application/soap+xml; charset=utf-8");
var strRequestBody = // SOAP request body
'<?xml version="1.0" encoding="utf-8"?>' +
'<s:Envelope ...' +
'</s:Envelope>';
oHTTP.send(strRequestBody);
while ((oHTTP.readyState != 4) && (oHTTP.readyState != 'complete')) {
Delay(100);
}
var strCookie = oHTTP.getResponseHeader("Set-Cookie");
Log.Message(strCookie);
}