Salesforce JSON POST适用于标准对象,而不是自定义对象

Salesforce JSON POST适用于标准对象,而不是自定义对象,json,salesforce,Json,Salesforce,我正在使用Salesforce REST API。我已经在SFDC中创建了一个新的自定义对象,并希望向其发布数据。我可以很高兴地将JSON文档发布到标准SFDC对象,如Account或Contact。然而,当我尝试发布到我的自定义对象时,我从SFDC收到一个超时 下面是我用来执行所有帖子的方法(无论是标准的还是定制的) publicstaticbsondocumentpostjsontosfdc(字符串uri、BsonDocument postDoc、字符串方法、HPSUtilities.Tra

我正在使用Salesforce REST API。我已经在SFDC中创建了一个新的自定义对象,并希望向其发布数据。我可以很高兴地将JSON文档发布到标准SFDC对象,如Account或Contact。然而,当我尝试发布到我的自定义对象时,我从SFDC收到一个超时

下面是我用来执行所有帖子的方法(无论是标准的还是定制的)

publicstaticbsondocumentpostjsontosfdc(字符串uri、BsonDocument postDoc、字符串方法、HPSUtilities.Transformation.Transformation)
{
字符串accessToken=transformation.sfdcAccess.accessToken;
字符串instanceUri=transformation.sfdcAccess.instanceUri;
字符串uri2=实例uri+uri;
System.Net.WebRequest req=System.Net.WebRequest.Create(uri2);
req.ContentType=“应用程序/json”;
req.Method=Method;//“POST”或“PATCH”;//补丁替代方案使用url parm=“?\u HttpMethod=PATCH”的POST
请求头添加(“授权:承载人”+accessToken);
字符串postDocAsString=postDoc.ToJson();
byte[]bytes=System.Text.Encoding.ASCII.GetBytes(postDocAsString);
req.ContentLength=字节.Length;
System.IO.Stream os=req.GetRequestStream();
Write(bytes,0,bytes.Length);//将其推出
os.Close();
System.Net.WebResponse resp=req.GetResponse();
if(resp==null)返回null;
System.IO.StreamReader sr=
新的System.IO.StreamReader(resp.GetResponseStream());
字符串rs=sr.ReadToEnd().Trim();
MongoDB.Bson.bsondocumentdoc2;
if(rs.Equals(“”&&method.Equals(“PATCH”,StringComparison.CurrentCultureIgnoreCase))
{
//对于成功的补丁(更新),SFDC神秘地返回一个完全空的响应。
//在这种情况下,让我们创造一些更有意义的东西!
doc2=新的B文件();
doc2.添加(“成功”、“真实”);
}
其他的
{
doc2=MongoDB.Bson.Serialization.BsonSerializer.Deserialize(rs);
}
返回doc2;
}

鉴于此代码在发布或修补到SFDC时有效,我相信我必须满足自定义对象的某种SFDC限制。是否需要将SFDC自定义对象标记为已启用API?有人知道可能导致我超时的任何其他问题吗?

发生这种情况时,uri2的示例是什么?是否有可能是某些东西抛出了丢失的异常,而不是超时
public static BsonDocument PostJSONToSFDC(string uri, BsonDocument postDoc, string method, HPSUtilities.Transformation.Transformation transformation)
        {
            string accessToken = transformation.sfdcAccess.accessToken;
            string instanceUri = transformation.sfdcAccess.instanceUri;

            string uri2 = instanceUri + uri;

            System.Net.WebRequest req = System.Net.WebRequest.Create(uri2);
            req.ContentType = "application/json";
            req.Method = method;// "POST" or "PATCH"; // a PATCH alternative uses POST with url parm="?_HttpMethod=PATCH"
            req.Headers.Add("Authorization: Bearer " + accessToken);

            string postDocAsString = postDoc.ToJson();

            byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postDocAsString);
            req.ContentLength = bytes.Length;
            System.IO.Stream os = req.GetRequestStream();
            os.Write(bytes, 0, bytes.Length); //Push it out there
            os.Close();
            System.Net.WebResponse resp = req.GetResponse();
            if (resp == null) return null;
            System.IO.StreamReader sr =
                  new System.IO.StreamReader(resp.GetResponseStream());

            string rs = sr.ReadToEnd().Trim();
            MongoDB.Bson.BsonDocument doc2;
            if (rs.Equals("") && method.Equals("PATCH", StringComparison.CurrentCultureIgnoreCase))
            {
                // For successful PATCHs (updates), SFDC mysteriously returns a completely empty response.
                // In this case let's create something more meaningful!
                doc2 = new BsonDocument();
                doc2.Add("success", "true");
            }
            else
            {
                doc2 = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<MongoDB.Bson.BsonDocument>(rs);

            }

            return doc2;
        }