【问题标题】:My TCL script failed to evalue HTTP POST body response我的 TCL 脚本无法评估 HTTP POST 正文响应
【发布时间】:2013-12-24 13:15:15
【问题描述】:

当我使用Fiddler 工具时,我可以获得 HTTP POST 正文响应,

HTTP/1.0 200 Ok
Server: xxxx TinyServer
MIME-version: 1.0
Cache-Control: no-store, no-cache;
Pragma: no-cache;
Set-Cookie: session=0000743A; path=/;
Content-Type: text/xml
Expires: -1
Content-Length: 3509

<column><column_oid>1.3.6.1.4.1.664.5.63.900.1.20.17.1.1.1</column_oid><oid_value_pairs><![CDATA[1.3.6.1.4.1.664.5.63.900.1.20.17.1.1.1.4822:......
MORE....

但是当我使用我的 TCL 脚本尝试相同的 HTTP POST 操作时,我收到了错误消息

set token [::http::geturl \
            "http://130.59.62.16/web/common/ajax/tcl/ajax_multi_get_xml.tcl" \
            -query "" -headers [array get Headers]]      

state(-keepalive)      = 0
state(-protocol)       = 1.1
state(-queryblocksize) = 8192
state(-queryprogress)  =
state(-strict)         = 1
state(-timeout)        = 0
state(-type)           = application/x-www-form-urlencoded
state(-validate)       = 0
state(binary)          = 0
state(body)            = <hr>
<pre><b>Session Variables:</b>


</pre><pre><b>Global Variables:</b>
base_oid = ""
rstr = ""


<b>Local Variables:</b>


</pre><hr>
can't read "oidlist": no such variable<br><b>from /web/common/ajax/tcl/ajax_multi_get_xml.tcl:8:</b><pre>
  1:
   2:    set rstr ""
   3:    if {[catch {set baseOID}] } {
   4:       set base_oid ""
   5:    } else {
   6:       set base_oid $baseOID
   7:    }
 <font color=red>  8:
 </font>  9:    snmp_getmulti $oidlist value err $count $base_oid
  10:    echo -n "<rvals>$value</rvals>"
  11: </pre>

使用 Firefox Web Developer,当我移动所需的页面时,它显示我正在执行 POST 操作,请在下面找到截图。

这里我没有在我的 POST 操作中提交查询,所以我在我的 geturl 中保留了一个空白。这种类型的网址如何使用查询操作。

我在 Fiddler 工具和我的脚本之间错过了什么, 我可以使用Firefox Web Developer Console Window查看

【问题讨论】:

  • 浏览器发送了哪些 exact 标头? (并且 http::geturl 调用是在执行 GET,而不是 POST……)
  • 如果你想要一个POST,你需要提供-query标志和::http::geturl,请看文档。
  • 谢谢大家,请找到上面的屏幕截图。

标签: http post web tcl fiddler


【解决方案1】:

正确的调试方法是

  1. 从 Fiddler 捕获工作请求
  2. 使用 Fiddler 从您的 TCL 脚本中捕获非工作请求
  3. 在 Fiddler 的 Web 会话列表中选择工作和不工作的请求。
  4. 右键单击并选择“比较会话”。

Fiddler 将向您展示这两个请求的不同之处,因此您可以更新您的 TCL 脚本以发送正确的请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多