2013-02-10 2 views
0

Я использую это для отправки почты с приложением, используя sendgrid api в salesforce ... Я получаю сообщение об ошибке как неправильный запрос и код состояния: 400файл выгрузка rest api .....?

Кто-нибудь поможет мне разобраться ... ???

String Boundary = '----------------------------400f182a9360';  
String requestBody; 
requestBody ='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="api_user"'+'\r\n\r\n'+'youremail'+'\r\n\r\n' ; 
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="api_key"'+'\r\n\r\n'+'yourpassword'+'\r\n\r\n' ; 
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="to"'+'\r\n\r\n'+'[email protected]'+'\r\n\r\n' ; 
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="subject"'+'\r\n\r\n'+'test'+'\r\n\r\n' ; 
//requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="html"'+'\r\n\r\n'+'<b>hi</b>'+'\r\n\r\n' ; 
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="text"'+'\r\n\r\n'+'mail'+'\r\n\r\n' ; 
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="from"'+'\r\n\r\n'+'[email protected]'+'\r\n\r\n' ; 
requestBody += '--' + Boundary + '\r\n\r\n'+'Content-Disposition: form-data; name="files['+mails.filename+']";filename="'+mails.filename+ '"\r\n\r\n'+ 'Content-Type:'+mails.conType+'\r\n\r\n'+Encodingutil.base64Encode(mails.bl)+'\r\n\r\n'; 
requestBody+= '--' + Boundary + '--\r\n'; 

String url= 'https://sendgrid.com/api/mail.send.json'; 

Http h = new Http();   
HttpRequest req = new HttpRequest();  
// req.setTimeout(60000);   
req.setEndpoint(url); 
req.setMethod('GET');   
req.setHeader('Content-Type', 'multipart/form-data; boundary=' +Boundary);     
req.setHeader('Content-Length',String.valueof(requestBody.length()));  
system.debug('=====length======'+String.valueof(requestBody.length())); 
//req.setHeader('Authorization','Bearer '+ssId); 
req.setBody(requestBody); 
HttpResponse res;    
String resURL;    
res = h.send(req); 
response=res.getbody(); 
System.debug('++++++++++++++'+requestBody); 
System.debug('++++++++++++++'+url); 
system.debug('=====response is======'+response); 
if(response.contains('success')) 
{ 
    response='{"message":"success"}'; 
} 
else 
{ 
    response='error: '+res.getbody(); 
} 

выхода это

------------------------------400f182a9360 

Content-Disposition: form-data; name="api_user" 

sendgridusername 

------------------------------400f182a9360 

Content-Disposition: form-data; name="api_key" 

sendgridpassword 

------------------------------400f182a9360 

Content-Disposition: form-data; name="to" 

[email protected] 

------------------------------400f182a9360 

Content-Disposition: form-data; name="subject" 

test 

------------------------------400f182a9360 

Content-Disposition: form-data; name="text" 

mail 

------------------------------400f182a9360 

Content-Disposition: form-data; name="from" 

[email protected] 

------------------------------400f182a9360 

Content-Disposition: form-data; name="files[New Text Document.txt]";filename="New Text Document.txt" 

Content-Type:text/plain 

YW5pbWVzaCBzZGYgc2RmIHMgZiBzIGRmIHNk 

------------------------------400f182a9360-- 

ответ

1

Там много в вашем коде, который не имеет смысла для меня, особенно в части, когда вы специальный кожухотрубном закодированный в Base64 если он заканчивается =. Я не знаю, зачем вам это нужно. Верхний и нижний колонтитулы отображаются в теле как прямой текст без дополнительной обработки.

Предполагается, что вы должны использовать bodyBlob.toString() вместо bodyBlob при создании своего тела (вызов этой переменной url сбивает с толку).

Этот StackOverflow question имеет хороший пример того, как должно выглядеть тело, если вы отправляете двоичные данные. У меня такое чувство, что ты не правильно строишь.

И вот еще один хороший ресурс о том, что body looks like for posted data. Кажется, вы не строите что-то в этом формате.

+0

спасибо за ответ mate .... bodyBlob.toString() работает только для текстовых файлов, не для других форматов, таких как изображение ... что я должен делать с ними .... вы можете помочь ... – user2034816

+0

У меня есть изменил вопрос ... может кто-то мне помочь ... – user2034816

+0

Я не знаком с API-интерфейсом sendgrid, но первое, что вам нужно исправить, это двойной CRLF после границы. Он должен иметь только одну новую строку, затем заголовки, затем две строки и данные. Я также думаю, что вы можете свести к одной новой линии между данными и следующей границей. – tomlogic

Смежные вопросы