doubishi8303 2011-12-08 19:34
浏览 135
已采纳

将特定数据类型发送到SOAP服务器 - base64binary

I am trying to upload a text file of data to a soap server with a function called BulkLoadContacts. The request requires a value called

<ImportFileStream>base64Binary</ImportFileStream>

I am creating a file, then querying my database, writing to the file, then connecting to their soap server, then sending my request.

Here is a snippit of my code:

    $file = 'tempfile.txt';
$handle = fopen($file, 'w') or die ('Cannot open file: ' . $file);

$list = dbExec("select * from listrak_upload");


foreach ($list as $l){

    $data = $l['email'] . "|" . $l['First_Name'] . "|" . $l['Last_Name'];

    fwrite($handle, $data);
}
$ap_param = array( 
    'ListID'    => (integer) 252403,
    'WSImportDirectives'    => array(
        'ImportTypeEnum'        => 'AddSubscribers',
        'ImportProfileTypeEnum' => 'Overwrite',
        'FileName'              => '',
        'HasColumnNames'        => true,
        'FileName'              => $file,
        'FileDelimiter'         => '|',
    ),
    'fileMappings'  => array(
        'WSFileMappings'    => array(
            'FileColumn'            => 0,
            'IsEmailAddressColumn'  => true,
            'AttributeID'           => 'email',
        ),
),
        'ImportFileStream' => $handle
    );

try {
    $return = $soapClient->__soapCall("BulkLoadContacts",array('parameter' => $ap_param));
    var_dump($return);
}
catch(SoapFault $fault){
    var_dump($fault);
}

Here is a code example from the documentation:

Byte[] fileBytes = System.IO.File.ReadAllBytes("C:\\Temp\\ImportFiles\\TestImportFileWithProfile.txt");

Any ideas how to do this in PHP?

  • 写回答

2条回答 默认 最新

  • doutian3010 2011-12-16 11:49
    关注

    Maybe something like this:

    $fileName = "test.txt";
    $rawFile = fread(fopen($fileName, "r"), filesize($fileName));
    $B64File = base64_encode($rawFile)
    

    In the param array:

    'ImportFileStream' => $B64File
    

    Maybe PHP client SOAP engine encodes to B64 automatically. If this is the case, comment $B64File = base64_encode($rawFile) and send $rawFile instead.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮