故障响应包含期望整数的字符串值

时间:2014-09-02 16:34:17

标签: c# xml-rpc

使用此代码通过openerp向服务器获取数据查询,并参考下面的代理进行咨询,但返回此错误,我是新的。

[XmlRpcUrl("//IP:port/xmlrpc/common")]
public interface IOpenERPRPCClient
{
    [XmlRpcMethod("login")]
    int autenticar(string db_name, string user, string passwd);

    [XmlRpcMethod("execute")]
    int[] buscar(string db_name, int uid, string passwd, string obj, string action, object[] filtro);

    [XmlRpcMethod("execute")]
    int [] eliminar(string db_name, int uid, string passwd, string obj, string action, int[] ids);

    [XmlRpcMethod("execute")]

    object[] read_objeto(string db_name, int uid, string passwd, string obj, string action, int[] ids, string[] campos);


}

   private void button1_Click(object sender, EventArgs e)
   {

   int uid = autenticar();
   IOpenERPRPCClient proxy_clientes =  IOpenERPRPCClient)XmlRpcProxyGen.Create<IOpenERPRPCClient>();
   IXmlRpcProxy cliente_rpc = (IXmlRpcProxy)proxy_clientes;
   cliente_rpc.Url = "//IP:port/xmlrpc/object";

   object[] filtro = { "'Active','=','True'" };

   proxy_clientes.buscar("sgsoft", uid, "openerp", "res.partner","search",filtro);
   }

错误:类型&#39; CookComputing.XmlRpc.XmlRpcTypeMismatchException&#39;的未处理异常发生在CookComputing.XmlRpcV2.dll

附加信息:故障响应包含字符串值,其中整数预期[故障响应:struct映射到类型Fault:成员faultCode映射到Int32类型]

1 个答案:

答案 0 :(得分:1)

OpenErp错误地将faultCode作为字符串消息返回,它应该是整数。

如果你想继续使用XmlRpc.NET,你所能做的就是从here下载3.0.0.270 beta版本,这种情况在build 238中得到了更好的处理。但是一定要在你的XmlRpcProxy上设置AllowStringFaultCode :

clientProxy.NonStandard = XmlRpcNonStandard.AllowStringFaultCode;