我想在iphone中集成XMLRPC.但是无法理解该怎么做?任何人都有自己的信息或教程或其他东西.
我正在使用CookComputing XML-RPC库来构建C#控制台客户端,以便在Moodle(一个开源学习管理系统)上执行API方法.服务器正在使用ZEND XML-RPC.
当我运行代码时,我得到一个TypeLoadException是Unhandled,引用这一行:
System.Object myResults = proxy.moodle_user_get_user_by_id(myUserIds);
Run Code Online (Sandbox Code Playgroud)
"重写成员时违反了继承安全规则:'CookComputing.XmlRpc.XmlRpcFaultException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)'.重写方法的安全性可访问性必须与方法的安全性可访问性相匹配被覆盖."
我的客户端代码是:
...
using CookComputing.XmlRpc;
[XmlRpcUrl("http://moodle.ourcompany.com/webservice/xmlrpc/server.php?wstoken=somereallylongtokenstring")]
public interface IMoodleUserGetUsersById : IXmlRpcProxy
{
[XmlRpcMethod("moodle_user_get_users_by_id")]
System.Object moodle_user_get_user_by_id(int[] userIds);
}
namespace Moodle_test_api1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Testing XML-RPC Services for Moodle!");
IMoodleUserGetUsersById proxy = XmlRpcProxyGen.Create<IMoodleUserGetUsersById>();
int[] myUserIds = {11, 12};
System.Object myResults = proxy.moodle_user_get_user_by_id(myUserIds);
//Console.WriteLine("Trying Function: {0}:{1}", proxy.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
我想要使用的方法的API文档是:
moodle_user_get_users_by_id: Get users by id.
Arguments
---------
userids (Required)
General structure
list of (
int //user ID …Run Code Online (Sandbox Code Playgroud) 我正在尝试动态重新定义gem的常量,所以我不需要修改gem本身.
require 'xmlrpc/client'
XMLRPC::Config.const_set("ENABLE_NIL_PARSER", true)
warning: already initialized constant ENABLE_NIL_PARSER
Run Code Online (Sandbox Code Playgroud)
是否有可能摆脱警告?
是否有可能允许long intPython simplexmlrpc服务器的xmlrpc扩展(数据类型)?
客户端使用Apache xmlrpc,它允许8字节整数.
基本上,我正在使用此函数的示例代码来测试它:
def FcnRLong():
x=8000000000L
return x
Run Code Online (Sandbox Code Playgroud)
这会导致此错误:
Java exception occurred:
org.apache.xmlrpc.XmlRpcException: <type 'exceptions.OverflowError'>:long int exceeds XML-RPC limits
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?是否有支持Python 2.7的xmlrpc服务器long int?
这是我的样品请求,
\n\n<?xml version=\xe2\x80\x9d1.0\xe2\x80\x9d encoding=\xe2\x80\x9dUTF-8\xe2\x80\x9d?>\n <methodCall>\n <methodName>login</methodName>\n <params>\n <param>\n <value>\n <struct>\n <member>\n <name>password</name>\n <value><string>XXXXXXXXXX</string></value>\n </member>\n <member>\n <name>username</name>\n <value><string>XXXX@XXX.com</string></value>\n </member>\n </struct>\n </value>\n </param>\n </params>\n</methodCall>\nRun Code Online (Sandbox Code Playgroud)\n\n这是我对请求的成功响应示例:
\n\n<struct>\n <member>\n <name>id</name>\n <value><string>12345</string></value>\n </member>\n <member>\n <name>api_status</name>\n <value><int>200</int></value>\n </member>\n</struct>\nRun Code Online (Sandbox Code Playgroud)\n\n问题:
\n\n我试图从.NET 控制台应用程序调用API端点。\n但是,它没有连接到服务器。谁能告诉我如何使用C#调用此API端点?
\n我使用他们的 Wordpress Droplet 安装程序在 Digital Ocean 上设置了一个站点。然后我安装了 Jetpack。
站点运行状况工具报告 Jetpack 未连接,我应该访问 Jetpack.com 调试器。我这样做了并将我的网站放入。我得到的错误:
XML-RPC is not responding correctly ( 200 )
Run Code Online (Sandbox Code Playgroud)
当访问该网址时,mywebaddress.com/xmlrpc.php我只是被重定向到该网站的主网址。
按照 Jetpack 的建议,我去了一个航站楼并运行
curl -A 'Jetpack by WordPress.com' -d '<methodCall><methodName>demo.sayHello</methodName></methodCall>' https://mywebaddress.com/xmlrpc.php
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我会得到以下结果。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://mywebaddress.com/">here</a>.</p>
<hr>
<address>Apache/2.4.29 (Ubuntu) Server at mywebaddress.com Port 443</address>
</body></html>
Run Code Online (Sandbox Code Playgroud)
我已经检查了该.htaccess文件,其中仅包含注释。我已经检查过/etc/apache2/apache2.conf,发现那里没有重定向。
所以我的问题是,谁能告诉我导致 301 重定向的原因是什么?
我正在用c ++编写一个XMLRPC客户端,用于与python XMLRPC服务器通信.
不幸的是,此时,python XMLRPC服务器只能在连接上发出一个请求,然后关闭,我发现这要归功于mhawke对我之前关于相关主题的查询的回复
因此,每次我想要发出XMLRPC请求时,我都必须创建一个到我的python服务器的新套接字连接.这意味着创建和删除许多套接字.一切正常,直到我接近~4000个请求.此时我收到套接字错误10048,正在使用套接字.
我试过睡觉线程让winsock修复它的文件描述符,这个技巧在我的python客户端有相同的问题时起作用,但无济于事.我尝试了以下内容
int err = setsockopt(s_,SOL_SOCKET,SO_REUSEADDR,(char*)TRUE,sizeof(BOOL));
Run Code Online (Sandbox Code Playgroud)
没有成功.
我正在使用winsock 2.0,所以WSADATA :: iMaxSockets不应该发挥作用,无论哪种方式,我检查并将其设置为0(我认为这意味着无穷大)
4000个请求似乎不是在应用程序运行期间发出的异常数量的请求.当服务器不断关闭并重新打开时,有没有办法在客户端使用SO_KEEPALIVE?
我完全错过了什么吗?
我在谷歌搜索过,但没有人发布解决方案,他们都说在配置中设置超时,但你怎么做?
如何从XMLRPC客户端或服务器重置/覆盖此设置?
这是我正在尝试的:
$server = new Zend_XmlRpc_Client('http://127.0.0.1/xmlrpc');
$client = $server->getProxy();
// Increasing the timeout
$client->setConfig(array('timeout'=>30));
Run Code Online (Sandbox Code Playgroud)
这是错误:
Fatal error: Uncaught exception 'Zend_XmlRpc_Client_FaultException'
with message 'Method "setConfig" does not exist'
in /usr/share/php/libzend-framework-php/Zend/XmlRpc/Client.php:370
Run Code Online (Sandbox Code Playgroud)
试图传递为arg:
$server = new Zend_XmlRpc_Client('http://127.0.0.1/xmlrpc', array('timeout'=>30));
Run Code Online (Sandbox Code Playgroud)
这是错误:
Catchable fatal error: Argument 2 passed to
Zend_XmlRpc_Client::__construct() must be an
instance of Zend_Http_Client
Run Code Online (Sandbox Code Playgroud)
找到解决方案,这里是:
$server = new Zend_XmlRpc_Client('http://127.0.0.1/xmlrpc');
// Get the HTTP Client used by the XMLRPC client
$http_client = $server->getHttpClient();
// Increasing the HTTP timeout
$http_client->setConfig(array('timeout'=>30));
$client = $server->getProxy();
Run Code Online (Sandbox Code Playgroud)
One Line也适用于我: …
我有一个xmlrpc接口正在运行,并且能够通过ID获取问题.例如,getIssue('PROJECT-701')返回的问题包含以下字段:
affectsVersions .. : [releaseDate,sequence,released,archived,...]
assignee ......... : '...'
components ....... : ...
created .......... : '2011-06-01 16:14:21.217'
customFieldValues : ...
description ...... : '...'
fixVersions ...... : #()
id ............... : '28602'
key .............. : 'PROJECT-701'
project .......... : 'PROJECT'
reporter ......... : '...'
status ........... : '10032'
summary .......... : '...'
type ............. : '18'
updated .......... : '2011-06-07 12:49:51.363'
votes ............ : '0'
Run Code Online (Sandbox Code Playgroud)
现在我需要获取问题的子任务.从html浏览器界面,我知道存在ID为702,703,...的3个子任务.如果已知这些ID,我可以通过其问题ID获取子任务(作为问题)(即getIssue('PROJECT-703')给出正确的返回,其中子任务为issuetype.
但是,如何从问题中通过xmlrpc获取那些子任务?
我发现子任务中没有parent-issue-id,父类中也没有任何子任务id.这是XMLRPC接口中缺少的(我需要使用SOAP),还是有一个聪明的技巧(文本或其他特殊搜索)来获取信息?
如果可能的话,我希望继续使用XMLRPC而不是SOAP,但是在XMLRPC中无法确定它也是有用的,所以我不会浪费时间试图让不完整的xml-rpc接口工作. .
附加信息:我正在与JIRA 3.13.5交谈,并且getServerInfo请求返回:
baseUrl .... : ...
buildDate .. : …Run Code Online (Sandbox Code Playgroud) 我目前正在为坚持使用Odoo for API的客户端开发一个android应用程序。我对此没有任何想法,即使在引用此链接后也没有得到它。他们提供了URL,数据库名称,用户名,以及密码。如果以前有人使用Android进行过Odoo的操作,您能提出建议吗?