我需要在Windows平台上使用C++中的XmlRpc.尽管我的朋友向我保证XmlRpc是一种"广泛使用的标准技术",但它并没有很多可用的库.事实上,我在Windows上只发现了一个库,(另外一个声称"你必须做很多工作才能在Windows上编译).我找到的库是Chris Morley的"XmlRpc ++".但是,它不支持SSL.
因此,我的问题是:我应该使用哪个图书馆?
我应该如何base64编码PDF文件,以便在Python中通过XML-RPC进行传输?
是否有一个(独立的!)java api将XML-RPC接口包装到bugzilla中?我不想为它编写自己的api,我实际上找不到一个这样做的库(只有这个).
更新:
我正在寻找像这样 只用Java编写的http://oss.dbc.dk/bugzproxy/
我正在寻找一种方法来防止多个主机同时向Python XMLRPC监听器发出命令.侦听器负责运行脚本以在该系统上执行任务,如果多个用户同时尝试发出这些命令,则会失败.有没有办法可以阻止所有传入的请求,直到单个实例完成?
我只是想知道,我怎么能xml-rpc在python中发送请求?我知道你可以使用xmlrpclib,但我如何发出请求xml来访问一个函数?
我想看看xml回应.
所以基本上我想将以下内容作为我的请求发送到服务器:
<?xml version="1.0"?>
<methodCall>
<methodName>print</methodName>
<params>
<param>
<value><string>Hello World!</string></value>
</param>
</params>
</methodCall>
Run Code Online (Sandbox Code Playgroud)
并得到回应
当我将无效的XML字符传递给Python SimpleXMLRPCServer时,我在客户端获得以下错误:
Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 6, column 15">
Run Code Online (Sandbox Code Playgroud)
为什么?我是否必须更改SimpleXMLRPCServer库代码才能解决此问题?
这是我的XML-RPC服务器代码:
from SimpleXMLRPCServer import SimpleXMLRPCServer
import logging
logging.basicConfig(level=logging.DEBUG)
def tt(text):
return "cool"
server = SimpleXMLRPCServer(("0.0.0.0", 9000))
server.register_introspection_functions()
server.register_function(tt)
# Run the server's main loop
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)
这是我的XML-RPC客户端代码:
s = xmlrpclib.ServerProxy('http://localhost:9000')
s.tt(unichr(0x8))
Run Code Online (Sandbox Code Playgroud)
在服务器端,我没有得到任何错误或回溯:
liXXXXXX.members.linode.com - - [06/Dec/2010 23:19:40] "POST /RPC2 HTTP/1.0" 200 -
Run Code Online (Sandbox Code Playgroud)
为什么服务器端没有错误?我如何诊断发生了什么?
我在客户端获得以下回溯:
/usr/lib/python2.6/xmlrpclib.pyc in __call__(self, *args)
1197 return _Method(self.__send, "%s.%s" % (self.__name, name))
1198 def __call__(self, *args):
-> 1199 return self.__send(self.__name, args)
1200
1201 …Run Code Online (Sandbox Code Playgroud) 我一直试图找到几个小时的答案...... Magento API使用的是什么时区?我假设Magento API将所有日期值都返回为GMT时间,因为它们不会在数据末尾附加时区字符串.它是否正确?
我想使用过滤器,并希望确保在我的非现场客户端正确解释日期.
我正在尝试使用Magento Enterprise 1.10 XML-RPC API来处理Magento安装之外的购物车/目录功能.我遇到的问题是当我加入购物车时.我可以很好地连接到API端点,登录和检索数据.以下是我用来发现Magento API工作原理的代码.
<?php
require $_SERVER['DOCUMENT_ROOT'].'/Zend/XmlRpc/Client.php';
$url = 'http://mymagento.com/api/xmlrpc';
$user = 'apiuser';
$pass = 'apipass';
$proxy = new Zend_XmlRpc_Client( $url );
$sess = $proxy->call( 'login', array( $user, $pass ) );
$cartId = $proxy->call( 'call', array( $sess, 'cart.create', array( 1 ) ) );
$pList = $proxy->call( 'call', array( $sess, 'product.list', array() ) );
$cList = $proxy->call( 'call', array( $sess, 'customer.list', array() ) );
$cList[0]['mode'] = 'customer';
$setCart = $proxy->call( 'call', array( $sess,
'cart_customer.set',
array( $cartId, $cList[0] ) ) …Run Code Online (Sandbox Code Playgroud) 我正在尝试将XML-RPC服务器创建为Windows服务.
XML-RPC服务器能够获取和放置文件(如FTP),
还可以通过远程客户端
发送给它的os.system()执行命令.
我正在尝试在Windows服务
事件循环中封装服务器.
创建服务时没有问题.
python.exe remoteServer.py --startup=auto install
Installing service XMLRPCServerService
Service installed
Run Code Online (Sandbox Code Playgroud)
启动服务时没有问题.
python.exe remoteServer.py start
Starting service XMLRPCServerService
Run Code Online (Sandbox Code Playgroud)
停止服务时没有问题.
python.exe remoteServer.py stop
Stopping service XMLRPCServerService
Run Code Online (Sandbox Code Playgroud)
再次启动服务时出现问题.
python.exe remoteServer.py start
Starting service XMLRPCServerService
Error starting service: An instance of the service is already running.
Run Code Online (Sandbox Code Playgroud)
查看进程监视器,我看到一个
仍在运行的进程"pythonservice.exe" .
以下是remoteServer.py的内容:
#!/bin/python
# $Revision: 1.7 $
# $Author: dot $
# $Date: 2011/12/07 01:16:13 $
LISTEN_HOST='0.0.0.0'
LISTEN_PORT=8000
import os
import SocketServer
import BaseHTTPServer
import SimpleHTTPServer
import xmlrpclib
import SimpleXMLRPCServer …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用haxr 3000.8.5 使用metaWeblog API(特别是newMediaObject方法)将图像上传到WordPress博客.
我已经成功地为小图像工作,成功上传了PNG和JPG格式的20x20图标.但是,当我尝试中等大小的图像(例如,300x300)时,我得到一个ErrorClosed例外,大概来自HTTP包(我做了一些源头潜水,发现haxr最终调用Network.HTTP.simpleHTTP).
任何人都可以解释为什么呼叫simpleHTTP可能失败的原因ErrorClosed?我们也欢迎您提供尝试和潜在解决方案的建议.
以下是成功上传和不成功上传的完整tcpdump输出的链接.
(已消毒的)代码也显示如下,以防任何用途.
import Network.XmlRpc.Client (remote)
import Network.XmlRpc.Internals (Value(..), toValue)
import Data.Char (toLower)
import System.FilePath (takeFileName, takeExtension)
import qualified Data.ByteString.Char8 as B
import Data.Functor ((<$>))
uploadMediaObject :: FilePath -> IO Value
uploadMediaObject file = do
media <- mkMediaObject file
remote "http://someblog.wordpress.com/xmlrpc.php" "metaWeblog.newMediaObject"
"default" "username" "password" media
-- Create the required struct representing the …Run Code Online (Sandbox Code Playgroud)