tcl怎么实现从服务器拷贝文件夹,如何在TCL中二进制读取文件并通过XMLRPC将其发送到用Python编写的服务器?...

我有一个用Python编写的XMLRPC服务器(使用xmlrpclib),它定义了以下方法:def saveFileOnServer(fileName, xmldata):

handle = open(fileName, "wb")

handle.write(xmldata.data)

handle.close()

return 0

如果我使用Python客户机连接并发送文件,则一切正常(文件已传输):

^{pr2}$

但是。。。我必须从TCL脚本连接到这个XMLRPC服务器。我要做的是:package require XMLRPC

package require SOAP

package require rpcvar

package require http

set fd [open "resource.res" r]

fconfigure $fd -translation binary

set data [read $fd]

close $fd

XMLRPC::create ::PytharAgent::saveFileOnServer -name "saveFileOnServer" -proxy [::PytharAgent::endpoint] -params {fileName string file binary}

puts [::PytharAgent::saveFileOnServer "C:\\Location\\resource.res" $data]

由此得出以下错误::not well-formed (invalid token): line 2, column 154

invoked from within

"$parseProc $procVarName $reply"

(procedure "invoke2" line 17)

invoked from within

"invoke2 $procVarName $reply"

(procedure "::SOAP::invoke" line 25)

invoked from within

"::SOAP::invoke ::SOAP::_PytharAgent_saveFileOnServer {C:\Location\resource.res} IxNResourceItev1.0.0.0JTYPE2\tm_versio..."

("eval" body line 1)

invoked from within

"eval ::SOAP::invoke ::SOAP::_PytharAgent_saveFileOnServer $args"

(procedure "::PytharAgent::saveFileOnServer" line 1)

invoked from within

"::PytharAgent::saveFileOnServer "C:\\Location\\resource.res" $data"

invoked from within

"puts [::PytharAgent::saveFileOnServer "C:\\Location\\resource.res" $data]"

(file "test.pythat-agent.tcl" line 109)

然后,我将Python代码中的二进制数据和TCL代码中的二进制数据与原始文件进行比较。我在HEX视图中验证后发现,使用TCL读取的数据有原始数据加上一些时不时额外的十六进制代码,或是稍微修改了一些十六进制代码。在

所以我猜这可能与TCL和Python处理二进制数据的不同方式有关。还是我在读TCL的时候做错了什么?在

PS我还发现了this issue似乎和我的很相似,但我不知道确切的解决方案是什么。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值