2013-06-21 66 views
1

我試圖提交使用QTP Web服務工具的​​XML提交無效的XML。我可以毫無問題地提交有效的XML,但是當我嘗試提交負面測試的無效XML(例如,在應該是有效日期時將元素值設置爲'XXX')時。我一直就行收到錯誤如何通過QTP Web服務

設置submitXMLRequest =的WebServices(webservicename).submitRequest(subReq)

錯誤說「有XML文檔中的錯誤(92.8) 異常來自:mscorlib程序 字符串未被識別爲有效日期時間

如何防止被提交請求之前正在驗證的XML數據?

回答

0

您是否嘗試過打通過QTP Web服務,而無需使用Web服務工具?我運行我們所有的Web服務只要QTP/UFT沒有這部分的套件,我可以提交任何我想要的API。

我已經提交檢查畸形XML/JSON數據,以確保檢查正在完成它由主服務處理之前後的反應和聽起來像你正在嘗試做的。

由於沒有真正在提交它使用的工具,它可以被驗證您的請求之前?如果是這種情況,可能無法注入錯誤的請求數據。

0

我相信你正在使用UFT API模塊。 UFT解析XML,因此您將無法在數據部分輸入XML特殊字符&和<。你可以使用下面的函數來做xml request post。這就是我現在使用的項目。

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; 
     }