首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SalesForce查询方法不返回可用的数据

SalesForce查询方法不返回可用的数据
EN

Stack Overflow用户
提问于 2012-10-18 01:39:25
回答 1查看 2K关注 0票数 4

我正在尝试与SalesForce的SOAP web服务集成。我的目标是简单地从SalesForce中拉出用户数据,这样我们就可以将其集成到我们的系统中。我可以使用从SalesForce网站上的合作伙伴WSDL生成的代理类(C#)成功登录。我想做的下一件事是查询用户,拉下FirstName、LastName等……

重要的是要知道,我被迫修改生成的代理代码,因为它不正确地生成。它填充了xml序列化字段以匹配私有字段,这会在进行web服务调用时抛出异常。它还为我删除的sObject类的"Any“属性生成了一个空白名称空间。如果你想知道我为什么做出这些选择,我听取了this StackOverflow topic的建议。

下面是我的查询:

qResult恰好包含3条记录(这是准确的,因为我只有3个用户)。问题是,除了“sObject”之外,类型上的所有属性都是空的。

我不知道是我在尝试查询时犯了一个简单的错误,还是我必须修改代理类并删除Any字段上的命名空间的事实导致了这个问题。在这一点上我不确定该怎么做。在开发人员控制台(位于SalesForce.com)中的相同查询将返回正确的数据。值得一提的是,我的查询结果返回了适当数量的元素,只是其中没有任何数据。它必须是简单的东西。比如重新添加名称空间绑定,但要弄清楚它应该是什么,或者向属性添加一个xmlbinding。

我想知道有没有人知道该怎么做。也许有人也遇到过同样的事情?

编辑:所以我花了一些时间来执行一些令人难以置信的黑客技术来拦截来自生成的webservice客户端的请求,最终我获得了响应我的请求而从SalesForce发送的原始数据。这就是它:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:partner.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sf="urn:sobject.partner.soap.sforce.com">
    <soapenv:Body>
        <queryResponse>
            <result xsi:type="QueryResult">
            <done>true</done>
            <queryLocator xsi:nil="true"/>
            <records xsi:type="sf:sObject">
                <sf:type>User</sf:type>
                <sf:Id xsi:nil="true"/>
                <sf:FirstName>Bob</sf:FirstName>
                <sf:LastName>Dyllan</sf:LastName>
                <sf:Email>bob@bob.com</sf:Email>
                <sf:CompanyName xsi:nil="true"/>
                <sf:Phone xsi:nil="true"/>
                <sf:Title xsi:nil="true"/>
            </records>
            <records xsi:type="sf:sObject">
                <sf:type>User</sf:type>
                <sf:Id xsi:nil="true"/>
                <sf:FirstName>Zachary</sf:FirstName>
                <sf:LastName>Sheppard</sf:LastName>
                <sf:Email>some_guy@yahoo.com</sf:Email>
                <sf:CompanyName>Yahoo</sf:CompanyName>
                <sf:Phone xsi:nil="true"/>  
                <sf:Title xsi:nil="true"/>
            </records>
            <records xsi:type="sf:sObject"> 
                <sf:type>User</sf:type>
                <sf:Id xsi:nil="true"/>
                <sf:FirstName xsi:nil="true"/>
                <sf:LastName>Chatter Expert</sf:LastName>   
                <sf:Email>noreply@chatter.salesforce.com</sf:Email>
                <sf:CompanyName xsi:nil="true"/>        
                <sf:Phone xsi:nil="true"/>
                <sf:Title xsi:nil="true"/>
            </records>
            <size>3</size>
            </result>
        </queryResponse>
    </soapenv:Body>
    </soapenv:Envelope>

这些sObjects上的"sf“属性似乎确实存在序列化问题……但是我如何让它与我的C#相匹配呢?下面是sObject类的当前C#:

代码语言:javascript
运行
复制
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:sobject.partner.soap.sforce.com")]
public partial class sObject
{

    /// <remarks/>
    public string type;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("fieldsToNull", IsNullable=true)]
    public string[]
        fieldsToNull;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
    public string
        Id;

    /// <remarks/>
    public System.Xml.XmlElement[]
        Any;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 23:24:42

经过一天令人难以置信的研究和挫折,我终于找到了SalesForce的sObject类的"Any“属性的正确属性。SalesForce试图将相关的xml元素拼凑到这个sObject类中,这样它们就可以将sObject类保留为动态类型。因此,为了强制C#类将所有的xml标记拼凑到"Any“属性中,我们只需应用以下代码:

代码语言:javascript
运行
复制
[System.Xml.Serialization.XmlAnyElement]

因此,需要明确的是,当您从SalesForce帐户生成WSDL时,它可能不是开箱即用的。您需要重命名传递到属性中的一些字符串参数,并将sObject类的"Any“属性上的空命名空间替换为XmlAnyElement属性,以便从接口的查询调用中获得成功的结果。在this StackOverflow topic主题中可以找到使客户端功能所需的更改。

现在,我可以成功地调用SalesForce接口的查询函数,并获得我查询的字段……我感觉好多了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12940122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档