2014-01-13 18 views
0

Bellow是我从销售人员服务器获得的XML POST和响应。 我试图添加一个附件到一个账户,但我不断收到INVALID_TYPE。创建salesforce附件时的INVALID_TYPE

我使用NuSoap而不是SalesForce PHP库,因为我正在处理的服务器没有所需的SOAP扩展。

我没有问题,进去和修改库,使其工作,但我没有线索最新错误的XML来解决这个问题。我的查询信息非常好。

所有帮助和建议表示赞赏!

<?xml version="1.0" encoding="ISO-8859-1"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> 
<SOAP-ENV:Header> 
    <nu2113:SessionHeader xmlns:nu2113="urn:enterprise.soap.sforce.com"> 
     <sessionId>00Di00000{---cutting out for privacy--}UrYmByvpO5yRWIK0Gmy</sessionId> 
    </nu2113:SessionHeader> 
</SOAP-ENV:Header> 
<SOAP-ENV:Body> 
    <create xmlns="urn:enterprise.soap.sforce.com"> 
     <sObject> 
      <type xsi:type="xsd:string">Attachment</type> 
      <fieldsToNull> 
       <elementName xsi:type="xsd:string">fieldsToNull</elementName> 
       <values xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[5]"> 
        <item xsi:type="xsd:string">OwnerId</item> 
        <item xsi:type="xsd:string">IsPrivate</item> 
        <item xsi:type="xsd:string">IsPartnerShared</item> 
        <item xsi:type="xsd:string">ConnectionSentId</item> 
        <item xsi:type="xsd:string">BodyLength</item> 
       </values> 
      </fieldsToNull> 
      <Id xsi:nil="true"/> 
      <ParentId xsi:type="xsd:string">001i000000JG17b</ParentId> 
      <Name xsi:type="xsd:string">Test document</Name> 
      <Description xsi:type="xsd:string">Test upload from WIN form</Description> 
      <ContentType xsi:type="xsd:string">.pdf</ContentType> 
      <Body xsi:type="xsd:string">hello</Body> 
     </sObject> 
    </create> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 


HTTP/1.1 100 Continue 
HTTP/1.1 500 Server Error 
Date: Mon, 13 Jan 2014 15:49:56 GMT 
Content-Type: text/xml;charset=UTF-8 
Content-Length: 676 

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sf="urn:fault.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<soapenv:Body> 
    <soapenv:Fault> 
     <faultcode>sf:INVALID_TYPE</faultcode> 
     <faultstring>INVALID_TYPE: Must send a concrete entity type.</faultstring> 
     <detail> 
      <sf:InvalidSObjectFault xsi:type="sf:InvalidSObjectFault"> 
       <sf:exceptionCode>INVALID_TYPE</sf:exceptionCode> 
       <sf:exceptionMessage>Must send a concrete entity type.</sf:exceptionMessage> 
       <sf:row>-1</sf:row> 
       <sf:column>-1</sf:column> 
      </sf:InvalidSObjectFault> 
     </detail> 
    </soapenv:Fault> 
</soapenv:Body> 
</soapenv:Envelope> 

回答

0

这条线可能是问题:

<ContentType xsi:type="xsd:string">.pdf</ContentType> 

这不是一个有效的内容类型。试试这个:

<ContentType xsi:type="xsd:string">application/pdf</ContentType> 
+0

可悲的是,什么都没做。 – kjones1876

+0

同样的错误?你有没有把你正在上传的pdf文件的base64编码字符串放到''? – Latheesan

+0

是的。我做到了。但我只是用虚拟文本替换它,因为每次刷新时显示一个1MB的b64 PDF文件是不切实际的。 你知道我能看到XML中“创建”请求的例子吗?所有文档只显示Java/C#代码。不是XML的自我。 – kjones1876

相关问题