【发布时间】:2015-07-29 06:43:35
【问题描述】:
我需要使用 API 集成 salesforce 和 expensify 并测试 API here。 由于我需要从 salesforce 提出请求,我只能使用 apex 来实现它。 我只需要发送一个可接受的 multipart/form-data Post 请求(包括 JSON 和 CSV 文件)以进行费用化。
我搜索了很多 http://blog.enree.co/2013/01/salesforce-apex-post-mutipartform-data.html 和 https://developer.salesforce.com/forums/?id=906F000000090JcIAI ,我的代码是这样的:
JSONGenerator gen=JSON.createGenerator(true);
gen.writeStartObject();
gen.writeStringField('type', 'update');
gen.writeFieldName('credentials');
gen.writeStartObject();
gen.writeStringField('partnerUserID', 'USERID');
gen.writeStringField('partnerUserSecret', 'TOKEN');
gen.writeEndObject();
gen.writeFieldName('inputSettings');
gen.writeStartObject();
gen.writeStringField('type', 'employees');
gen.writeStringField('policyID', 'policyID');
gen.writeStringField('fileType', 'csv');
gen.writeEndObject();
gen.writeEndObject();
String requestJobDescription=gen.getAsString();
Blob csv=Blob.valueOf('EmployeeEmail,ManagerEmail,Admin\n'+'asidoj@qwe.com,qwdmka@ee.com,FALSE');
String boundary = '----------------------------wqo12loz741e90d31eff';
String header2 = '--'+boundary+'\n'+ 'Content-Disposition: form-data; name="data"; filename="1.csv"'+'\nContent-Type: application/octet-stream\n\n';
String header1andJSON = '--'+boundary+'\nContent-Disposition: form-data; name="requestJobDescription" \n\r\n\r'+requestJobDescription+'\n';
String footer = '--'+boundary+'--';
String body=header1andJSON+header2+csv.toString()+footer;
HttpRequest req = new HttpRequest();
req.setHeader('Content-Type','multipart/form-data; boundary='+boundary);
req.setMethod('POST');
req.setEndpoint('https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations');
req.setBody(body);
req.setTimeout(120000);
Http http = new Http();
HTTPResponse res = http.send(req);
问题是发送请求后,我得到了类似
的响应{"responseMessage":"Error in multipart initialization","responseCode":500}
可能是编码类型或者我不知道的原因造成的。
我真的很困惑,有人可以帮忙吗? 如果您需要更多信息,请告诉我!
【问题讨论】:
标签: salesforce httprequest apex-code apex