1

我正在尝试使用 QTP 中的 Web 服务工具提交 XML。我可以毫无问题地提交有效的 XML,但是当我尝试提交无效的 XML 以进行负面测试时(例如,当它应该是有效日期时将元素值设置为“XXX”)。我不断收到在线错误

设置 submitXMLRequest = WebServices(webservicename).submitRequest(subReq)

错误提示“XML 文档中存在错误 (92,8) 异常来自:mscorlib 字符串未被识别为有效的日期时间

如何防止在提交请求之前验证 XML 的数据?

4

2 回答 2

0

您是否尝试过在不使用 Web 服务工具的​​情况下通过 QTP 访问 Web 服务?我通过 QTP/UFT 运行我们所有的 Web 服务,没有套件的那部分,我可以将任何我想要的东西提交给我们的 API。

在提交格式错误的 XML/JSON 数据后,我必须检查响应,以确保在主服务处理它之前完成检查,这听起来像是您正在尝试做的事情。

没有实际使用过该工具,它可以在提交之前验证您的请求吗?如果是这种情况,则可能无法注入错误的请求数据。

于 2015-09-03T20:04:05.493 回答
0

我相信您正在使用 UFT API 模块。UFT 解析 XML,因此您将无法在数据部分输入 XML 特殊字符 & 和 <。您可以使用以下函数来进行 xml 请求发布。这就是我现在在我的项目中使用的。

public static string HttpRequest(string url, string xml)
    {
        string response = string.Empty;

        HttpWebRequest httpWebRequest = null;
        HttpWebResponse httpWebResponse = null;

        httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

        httpWebRequest.Timeout = 10000;

        try
        {
            byte[] bytes = System.Text.Encoding.ASCII.GetBytes(xml);

            httpWebRequest.Method = "POST";
            httpWebRequest.ContentLength = bytes.Length;
            httpWebRequest.ContentType = "text/xml; encoding='utf-8'";

            using (Stream requestStream = httpWebRequest.GetRequestStream())
            {
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();
            }

            httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            if (httpWebResponse.StatusCode == HttpStatusCode.OK)
            {
                using (Stream responseStream = httpWebResponse.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(responseStream))
                        response = reader.ReadToEnd();
                }
            }
            httpWebResponse.Close();
        }
            catch (Exception ex)
            {
                throw new Exception ("Error");
            }
            finally
            {
                if (httpWebResponse != null)
                {
                    httpWebResponse.Close();
                    httpWebResponse = null;
                }

                httpWebRequest = null;
            }
            return response;
        }
于 2015-09-24T17:42:16.510 回答