【问题标题】:WebRequest fails on TeamCity with HTTP-400 errorWebRequest 在 TeamCity 上失败并出现 HTTP-400 错误
【发布时间】:2013-12-05 01:04:04
【问题描述】:

我有一个对 API 进行 SOAP 调用的 powershell 脚本:

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

$request = [System.Net.WebRequest]::Create("https://***.***.***.***/iControl/iControlPortal.cgi")
$request.Method = "POST"
$request.Credentials = new-object System.Net.NetworkCredential @("username", "password")
$request.Proxy = new-object System.Net.WebProxy @("***.***.***.***", ****)
$request.PreAuthenticate = $true;
$request.CachePolicy = new-object System.Net.Cache.RequestCachePolicy "NoCacheNoStore"

$payload = '<?xml version="1.0"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><soap:Body><q1:get_monitor_status xmlns:q1="urn:iControl:LocalLB/PoolMember"><pool_names href="#id1" /></q1:get_monitor_status><soapenc:Array id="id1"><Item>{0}</Item></soapenc:Array></soap:Body></soap:Envelope>' -f "my-pool"
$requestPayloadWriter = new-object System.IO.StreamWriter $request.GetRequestStream()
$requestPayloadWriter.Write($payload)
$requestPayloadWriter.Flush()
$requestPayloadWriter.Close()

$responsePayloadReader = new-object System.IO.StreamReader $request.GetResponse().GetResponseStream()
$pool_status = $responsePayloadReader.ReadToEnd()
$responsePayloadReader.Flush()
$responsePayloadReader.Close()

$pool_status

这在我的机器上本地运行,但当我通过 TeamCity 运行它时失败。
当我远程进入代理并从控制台手动运行脚本时它确实有效。

我从 PowerShell 得到的消息是:

使用“0”参数调用“GetResponse”的异常:“远程 服务器返回错误:(400) 错误请求。”

对可能出现的问题或如何进一步诊断有任何建议吗?
我无法使用 Fiddler 捕获任何流量,因此也欢迎提出任何建议。

【问题讨论】:

  • 您是否收到任何错误信息?你见过这个SO问题吗? stackoverflow.com/questions/9165658/…
  • @KeithHill 我确实收到了错误响应 - 我现在已将其包含在我的问题中。
  • I was not able to capture any traffic using Fiddler
  • @wal 是对的。错误来自服务器,因为它认为您的请求无效。最好的调试方法是将非工作请求与 Fiddler 中的工作请求进行比较。
  • @wal 我可以捕获我发送的请求,但不能捕获来自 TeamCity 的请求。

标签: powershell teamcity webrequest


【解决方案1】:

问题出在我调用的 F5 API 上。 我们使用的 F5 版本中存在一个错误:在某些情况下,请求会以 400 响应被拒绝。

与 TeamCity/Powershell 无关。

【讨论】:

    猜你喜欢
    • 2020-12-28
    • 2010-09-15
    • 2014-08-02
    • 2023-03-26
    • 1970-01-01
    • 2017-01-16
    • 2017-06-04
    • 2017-04-12
    • 2019-05-27
    相关资源
    最近更新 更多