【问题标题】:Post 'multipart/form-data' out of Salesforce.com APEX从 Salesforce.com APEX 发布“multipart/form-data”
【发布时间】:2012-04-18 18:40:23
【问题描述】:

我有一个 APEX 方法,它尝试将表单发布到 SFDC 的 APEX 代码之外的远程端点。

一切似乎都正确编码,服务器发回了 200 响应,但附件没有随请求一起到达……SFDC 是否在我的帖子正文发送之前删除了它的内容?

HttpRequest req = new HttpRequest();
req.setHeader('Authorization','Basic '+EncodingUtil.base64Encode(Blob.valueOf('removed:removed')));
req.setHeader('Content-Type','multipart/form-data; boundary=-----------------------------153501500631101');
req.setHeader('X-Atlassian-Token','nocheck');
req.setMethod('POST');  
req.setEndpoint(endPoint+'issue/'+c.Internal_Bug_Number__c+'/attachments');

String body = '-----------------------------153501500631101\r\n';
body = body + 'Content-Disposition: form-data; name="Filedata"; filename="'+attachments[0].Name+'"\r\n';
body = body + 'Content-Type: '+attachments[0].ContentType+'\r\n';
body = body + 'Content-transfer-encoding: base64\r\n\r\n';
body = body + attachments[0].Body+ '\r\n';
body = body + '-----------------------------153501500631101--\r\n';

req.setBody(body);  

【问题讨论】:

  • 不要设置 content-Length 标头。您也正在对 blob 进行 base64 编码,但并未将其表示为内容编码。
  • @superfell Attachment.Body 存储为base64 encoded string...EncodingUtil 的使用是为了在发送前将其转换为字符串。我将尝试更改内容长度和“压缩”以匹配 base64 编码而不将其转换为字符串
  • @superfell,好的,我按照你的指示,仍然是状态 200,但另一端什么都没有......
  • 创建一个 RequestBin (requestb.in) 并将数据发布到那里 - 你应该能够看到实际发生了什么。
  • 我会尝试以下操作:(1) 从命令行使用 curl 尝试,(2) 将代码中的 base64 编码替换为显式字符串 - 'SGVsbG8gd29ybGQh' 是 'Hello world!' ,并且,如果可行,(3)转储您正在创建的主体以进行调试,看看有什么区别。发生了一些奇怪的事情......

标签: http salesforce apex-code


【解决方案1】:

试试这个解决方案。这是我提出的 Blob+HttpResponse 的混乱解决方案。 http://enreeco.blogspot.it/2013/01/salesforce-apex-post-mutipartform-data.html

【讨论】:

  • 你已经得到它看起来像一个有趣的解决方法! Apex 肯定会让其中一些事情变得困难!
  • 你不知道我搞砸了多少:)
  • 是的,因此我放弃并使用电子邮件附件的原因(至少我的目标环境有一个电子邮件处理程序,否则我会是 SOL)
【解决方案2】:

您应该能够使用 EncodingUtil.urlEncode 来确保表单参数。见https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_encodingUtil.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 2019-05-03
    • 1970-01-01
    相关资源
    最近更新 更多