首页 > 解决方案 > 如何解决 MetadataAPI 在将记录类型设置为查找字段值时给出“System.CalloutException:IO 异常:读取超时”错误

问题描述

我正在使用元数据 API 在字段中添加选项列表值(“自定义”)。我创建了一个记录类型(AAM_T),它必须与我添加到选项列表的值相关联,但在运行时:service.updateMetadata(新MetadataService.Metadata[] { 记录类型 }); 导致错误“System.CalloutException:IO 异常:读取超时”。

MetadataService.PickListValue objPickListValue = new MetadataService.PickListValue();
objPickListValue.fullName = 'custom';
objPickListValue.default_x = false;

MetadataService.RecordType recordType = (MetadataService.RecordType) 
                                        service.readMetadata('RecordType',
                                        new String[] { 'Account.AAM_T'}).getRecords()[0];

MetadataService.RecordTypePicklistValue[] recordPickListType =  recordType.picklistValues;

if(recordPickListType.size() > 0){
   for(MetadataService.RecordTypePicklistValue rpk : recordPickListType) {
       if(rpk.picklist == picklistToUpdate){
            rpk.values.add(objPickListValue);
            break;
       }
    }

    try{
         service.updateMetadata( new MetadataService.Metadata[] { recordType });
       } catch(Exception ex){
          system.debug('@@@getStackTraceString : '+ex.getStackTraceString());
          //Result: System.CalloutException: IO Exception: Read timed out -- null
          system.debug('@@@getMessage : '+ex.getTypeName() 
                       + ': ' + ex.getMessage() + ' -- ' + ex.getCause());

        }

  }

标签: salesforcemetadataapexpicklistsfdc-metadata-api

解决方案


您可以像任何其他 Web 服务一样尝试此操作。对我有用

MetadataService.MetadataPort 服务 = 新 MetadataService.MetadataPort();

service.timeout_x=120000;


推荐阅读