2012-09-19 136 views
3

我想通过使用SOAP API Partner WSDL以编程方式在SalesForce中创建一个用户。这是我的代码:如何使用SOAP合作伙伴API创建SalesForce'用户'?

import com.sforce.soap.partner.Connector; 
import com.sforce.soap.partner.PartnerConnection; 
import com.sforce.soap.partner.QueryResult; 
import com.sforce.soap.partner.SaveResult; 
import com.sforce.soap.partner.sobject.SObject; 
import com.sforce.ws.ConnectionException; 
import com.sforce.ws.ConnectorConfig; 

import com.sforce.soap.partner.sobject.*; 
import com.sforce.soap.partner.*; 
import com.sforce.soap.*; 
import com.sforce.*; 

public class PartnerAPICreateUser { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     ConnectorConfig config = new ConnectorConfig(); 
     config.setUsername("[email protected]"); 
     config.setPassword("dhskjhkjgfkjsdhkfjg"); 

     PartnerConnection connection = null; 

     try { 
      SObject user = new SObject(); 

      user.setType("user"); 

      user.setField("Alias", "abcd"); 
      user.setField("DefaultGroupNotificationFrequency", "P"); 
      user.setField("DigestFrequency", "D"); 
      user.setField("Email", "[email protected]"); 
      user.setField("EmailEncodingKey", "ISO-8859-1"); 
      user.setField("LanguageLocaleKey", "English"); 
      user.setField("LastName", "Rau"); 
      user.setField("LocaleSidKey", "En"); 
      user.setField("TimeZoneSidKey", "America/Los_Angeles"); 
      user.setField("Username", "[email protected]"); 
      user.setField("UserPermissionsCallCenterAutoLogin", "true"); 
      user.setField("UserPermissionsMarketingUser", "true"); 
      user.setField("UserPermissionsOfflineUser", "true"); 


      connection = Connector.newConnection(config); 
      SaveResult[] results = connection.create(new SObject[] { user }); 
      System.out.println("Created user: " + results[0].getId()); 

      QueryResult queryResults = connection 
        .query("SELECT Id, Name from User " 
          + "ORDER BY CreatedDate DESC LIMIT 5"); 
      if (queryResults.getSize() > 0) { 
       for (SObject s : queryResults.getRecords()) { 
        System.out.println("Id: " + s.getField("Id") + " - Name: " 
          + s.getField("Name")); 
       } 
      } 

     } catch (ConnectionException ce) { 
      ce.printStackTrace(); 
     } 
    } 
} 

然而,当我执行此Java程序它提供了以下信息,显示“创建用户:空” :-(

Created user: null 
Id: 005E0000001fb3vIAA - Name: Rau 
Id: 005E0000001fVTTIA2 - Name: Chatter Expert 
Id: 005E0000001fVU1IAM - Name: Wap Rau 

管理权限,当我去MYNAME>设置>管理用户(在管理设置)>配置文件

enter image description here

你能告诉我什么是错?

感谢,

的Wap劳

回答

4

的创建调用返回一个错误,但你不检查它,返回SaveResult会告诉你为什么没有创建用户,你想要的东西像

SaveResult[] results = connection.create(new SObject[] { user }); 
if (results[0].isSuccess()) 
    System.out.println("Created user: " + results[0].getId()); 
else 
    System.out.println("Error: " + results[0].getErrors()[0].getStatusCode() + 
         ":" + results[0].getErrors()[0].getMessage()); 
+0

嘿,谢谢superfell,你是国王!它解决了我的问题,因为我能够理解事情发生错误的地方。再次感谢。 – waprau

相关问题