标签: xml-rpc

如何独立使用单个Zend Framework组件,如XML-RPC或REST?

Zend框架以松耦合组件而闻名.

我想使用zend框架中的XML-RPC,对XML-RPC有依赖吗?就像我从Zend Framework Library中取出XML-RPC文件夹并尝试实例化RPC对象一样,它会抛出错误吗?

我在哪里可以找到从框架中分离组件的正确方法?

谢谢

php zend-framework module xml-rpc

5
推荐指数
1
解决办法
2282
查看次数

XML-RPC 方法可以在 Python 中按名称(作为字符串)调用吗?

在 python 中,调用 XML-RPC 方法涉及调用代理对象上的方法:

from xmlrpclib import ServerProxy
print ServerProxy('https://example.com/rpc').api.hello_there('John')
Run Code Online (Sandbox Code Playgroud)

在其他一些语言中,例如 perl,您可以将方法名称作为方法参数传递。

use Frontier::Client;
$p = Frontier::Client->new(url => 'https://example.com/rpc');
$result = $p->call('api.hello_there', 'John');
print $result;
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Python 中按名称(作为字符串)调用 XML-RPC 方法?

python xml-rpc xmlrpclib call getattr

5
推荐指数
1
解决办法
1579
查看次数

XML-RPC - 无法编组递归字典

我有一个通过xml-rpc发送字典的简单示例:

 class CTest(object):
    def __init__(self):
        self.node1 = {'data':'zek', 'parent':{},  'children':[]}
        self.node2 = {'data':'bill', 'parent':{}, 'children':[]}
        self.node1['children'].append(self.node2)
        self.node2['parent'] = self.node1

    def getNode(self):
        return self.node1
Run Code Online (Sandbox Code Playgroud)

我有两个字典:node2是node1的子节点,同时node2将node1的引用作为父变量.所以它是一个递归字典.当我尝试通过XML-RPC发送node1时,我得到了以下异常:

#Command to execute xml-rpc dump method for serialization
test = CTest()
xmlrpclib.dumps((test,), 'Node Object')
#Exception
raise TypeError, "cannot marshal recursive dictionaries"
Run Code Online (Sandbox Code Playgroud)

是否可以通过XML-RPC发送node1(不更改字典结构)?

谢谢.

python recursion dictionary xml-rpc marshalling

5
推荐指数
1
解决办法
2347
查看次数

使用 ZeroMQ 构建点对点工作负载调度器有帮助吗?

我正在编写工作负载调度程序。我希望我的软件是一个点对点调度程序,即。一个节点只知道一些邻居(其他节点)并使用它们到达其他节点。

每个节点都有自己的加权路由表来向其他对等点发送消息(基本上基于跳数),即。“我希望主人给我我的时间表”或“节点 B 上的资源 A 是否可用?” :哪个邻居离我的目标最近?

例如,我使用XML-RPC( xmlrpc-c) 和std::multimaps/编写了自己的路由协议std::maps

我正在考虑使用ZeroMQ来优化我的数据流:

  • 排队可以减少peer之间的网络负载;
  • 订阅可用于发布升级。

作为结果 :

  • 我需要打开与创建新类型连接一样多的套接字;
  • 每个节点都需要是一个客户端、一个服务器、一个发布者、一个订阅者、一个代理和一个目录;
  • 我不确定我的“点对点架构”是否与 ZeroMQ 的主要目的兼容。

您认为这ZeroMQ是一个有用的概念吗?

c++ routing scheduling xml-rpc zeromq

5
推荐指数
1
解决办法
1430
查看次数

类型错误:需要类似字节的对象,而不是“二进制”

xmlrpc.server用来构建服务器并pickle.dumps()用来腌制一些数据。然后我xmlrpc.client用来构建一个客户端并pickle.loads()用来解开这些数据。

## server
server = SimpleXMLRPCServer(('0.0.0.0', 5005), allow_none=True)
# in _dispatch method:
result = perform_stuff()
return pickle.dumps(result)

## client
proxy = ServerProxy(f'http://{host}:{port}', allow_none=True)
result = proxy.make_rpc()
return pickle.loads(result.data)
Run Code Online (Sandbox Code Playgroud)

但是,我解决了以下问题:

我不知道类似字节的对象和“二进制”之间的区别

我尝试使用 bytes(ret) 来解决这个问题,但它还有另一个

python xml-rpc pickle

5
推荐指数
1
解决办法
4587
查看次数

使用 Zeep 的 Python SOAP 客户端 - 导入命名空间

一些背景信息:在解决身份验证问题后,我在这里提出了这个问题。我更喜欢打开一个新的问题,以避免与原始问题无关的评论污染前一个问题,并给予它适当的可见性。

我正在开发一个与服务器在同一 Intranet 中运行的 SOAP 客户端,无需访问 Internet。

from requests.auth import HTTPBasicAuth
from zeep import Client
from zeep.transports import Transport

wsdl = 'http://mysite.dom/services/MyWebServices?WSDL'
client = Client(wsdl, transport=HTTPBasicAuth('user','pass'), cache=None)
Run Code Online (Sandbox Code Playgroud)

问题:WSDL 包含对位于 Intranet 外部的外部资源的导入('import namespace="schemas.xmlsoap.org/soap/encoding/"'),因此 Zeep 客户端实例化失败并显示:

Exception: HTTPConnectionPool(host='schemas.xmlsoap.org', port=80): Max retries exceeded with url: /soap/encoding/ (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f3dab9d30b8>: Failed to establish a new connection: [Errno 110] Connection timed out',))
Run Code Online (Sandbox Code Playgroud)

问题:是否可以(并且有意义)在不访问外部资源的情况下创建 Zeep 客户端?

作为一个额外的细节,另一个用 Java 编写的基于 XML rpc ServiceFactory 的客户端似乎对此类问题更有弹性,即使没有可用的互联网连接,该服务也会创建(并工作)。真的需要从 xmlsoap.org 导入命名空间吗?

在 @mvt 回答后进行编辑:

因此,我选择了建议的解决方案,它允许我同时控制对外部资源的访问(阅读:禁止访问与托管端点的服务器不同的服务器)。

class MyTransport(zeep.Transport): …
Run Code Online (Sandbox Code Playgroud)

python soap wsdl xml-rpc zeep

5
推荐指数
2
解决办法
7650
查看次数

如何使用 PHP7 Ripcord 库获取 Odoo 数据?

我正在尝试通过 XMLRPC 从 Odoo 获取一些数据,并且正在使用 PHP 及其 Ripcord 库(在https://www.odoo.com/documentation/8.0/api_integration.html上推荐)。

所以我按照该页面上写的步骤进行操作。

首先,我从https://github.com/poef/ripcord.git下载了 Ripcord 文件。我将它们保存在名为ripcord的文件夹中,该文件夹位于我的 PHP 页面的索引目录中。

其次,我启用了 PHP7 的 OpenSSL 和 XMLRPC 扩展。我认为我做得很好,因为如果我执行下一句话:

$modules = get_loaded_extensions();
foreach ($modules as $module) {
    echo $module.', ';
}
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

核心、日期、libxml、openssl、pcre、zlib、过滤器、哈希、反射、SPL、会话、标准、apache2handler、mysqlnd、PDO、xml、日历、ctype、curl、dom、mbstring、fileinfo、ftp、gd、gettext、 iconv、json、exif、mcrypt、mysqli、pdo_mysql、Phar、posix、readline、shmop、SimpleXML、套接字、sysvmsg、sysvsem、sysvshm、分词器、wddx、xmlreader、xmlrpc、xmlwriter、xsl、Zend OPcache、

现在,这是我的index.php 的代码:

$url = 'http://localhost:30080';
$db = 'db_v80_test_01';
$username = 'admin';
$password = 'adminpwd';

require_once('ripcord/ripcord.php');

// $info = ripcord::client($url)->start(); 
// list($url, $db, $username, $password) = array($info['host'], $info['database'], $info['user'], $info['password']);

$common = ripcord::client($url.'/xmlrpc/2/common');

$uid …
Run Code Online (Sandbox Code Playgroud)

php xml-rpc odoo odoo-8 ripcord

5
推荐指数
1
解决办法
8655
查看次数

将CookComputing XMLRpcStruct(IEnumerable <Object>)转换为实际的C#类

所以,我正在使用CookComputings XMLRPC库来与之交谈InfusionSoft(这是一个非常受欢迎的在线CRM).主要方法是:

 [XmlRpcMethod("DataService.query")]
 IEnumerable<object> QuerySubscriptionStatus(string apiKey, 
        string table, int limit, int page, 
        IDictionary queryData, string[] selectedFields);
Run Code Online (Sandbox Code Playgroud)

我很IEnumerable<object>遗憾地使用,因为InfusionSoft XML/RPC API需要它.我希望情况不是这样,但可悲的是.

由于我使用.NET 4.5,我想我可以做一个动态演员:

  var subStatus = proxy.QuerySubscriptionStatus(
      _key, "RecurringOrder", 500, 0, dict, sarray);
  var result = subStatus.Cast<SubscriptionStatus>();
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,我从C#中得到了一个非常难过的错误:

无法将类型为"CookComputing.XmlRpc.XmlRpcStruct"的对象强制转换为"WBI.Model.SubscriptionStatus".

我已经尝试将我的班级指定为struct; 哎呀我甚至尝试用XMLRpcMember()标签来指定它,但不,它只是不会转换.

我如何与IEnumerable?中的数据进行交互?

我试过的类/结构类型

public struct SubStatus
{
    public int AffiliateId;
    public int AutoCharge;
    public double BillingAmt;
    public string BillingCycle;
    public int CC1;
    public int CC2;
    public int ContactId;
    public DateTime EndDate; …
Run Code Online (Sandbox Code Playgroud)

.net c# xml-rpc .net-4.5

5
推荐指数
1
解决办法
1222
查看次数

拒绝 xmlrpc.php 文件但不记录失败的请求

我将此添加到.htaccessWordPress 网站:

<files xmlrpc.php>
order allow,deny
deny from all
</files>
Run Code Online (Sandbox Code Playgroud)

它有效,当有人尝试访问时http://example.com/xmlrpc.php,会显示此消息:

Forbidden
您无权访问此服务器上的 /xmlrpc.php。

但是,日志仍然显示 ( less /var/log/apache2/error.log):

[Thu May 02 10:02:03.316061 2019] [access_compat:error] [pid 19467] 
[client 1.2.3.4:49409] AH01797: client denied by server 
configuration: /path/to/xmlrpc.php
Run Code Online (Sandbox Code Playgroud)

如何拒绝访问 xmlrpc.php(可能来自 .htaccess)但防止它出现在 Apache 日志中?

php apache wordpress .htaccess xml-rpc

5
推荐指数
1
解决办法
1373
查看次数

使用 Wordpress API 和 Javascript 库添加带有媒体的帖子

我想使用 API 在我的 Wordpress 博客上发帖。因为我在一个 Javascript 应用程序中,所以我会使用这种语言来做到这一点。

我进行了一些搜索,发现使用 Wordpress XML-RPC 协议的node-wpapi包。一切正常,除了发布带有媒体或特色图片的文章。

const responseUploadImage = await wp.media()
    .file('./tempImage.jpg')
    .create({
        title: 'My awesome image',
        alt_text: 'an image of something awesome',
        caption: 'This is the caption text',
        description: 'More explanatory information'
    });

const responsePostCreation = await wp.posts().create({
    title: 'Your Post Title',
    content: 'Your post content',
    // status: 'publish'
});

const response = await wp.media().id(responseUploadImage.id).update({
    post: responsePostCreation.id
});
Run Code Online (Sandbox Code Playgroud)

它确实创建帖子和上传媒体,但它不会创建带有媒体的帖子。

您知道使用 JS 库创建带有媒体和特​​色图像的帖子的替代方法或更好的方法吗?

javascript wordpress xml-rpc posts

5
推荐指数
1
解决办法
290
查看次数