I've a Rest Resource in salesforce which creates records in salesforce. And i've a demo canvas app hosted on Heroku.
On that app, i'm authenticating using Single Request and trying to query data(which is working fine).
But, when i try to call the rest resource, it is not calling and sending the status back as '0'.
Can some one help me calling the rest resource.
Below is:
1) Rest Resource
2) Working code: Querying data.
3) Not working: Hitting Rest Service/Resource.
1) Rest Resource Code:
@RestResource(urlMapping='/insertEXTArt/*')
global class InsertArticles
{
@HttpPost
global static String newArticles()
{
System.debug('___ping happened___');
RestRequest req = RestContext.request;
Account obj = new Account();
obj.Name='articleNamefff';
obj.PR_DEV__Reference__c = 'fffreference';
insert obj;
return 'success';
}
}
2) Single Request Authentication(Working):
<%
// Pull the signed request out of the request body and verify/decode it.
Map<String, String[]> parameters = request.getParameterMap();
String[] signedRequest = parameters.get("signed_request");
if (signedRequest == null) {%>
This App must be invoked via a signed request!<%
return;
}
String yourConsumerSecret=System.getenv("CANVAS_CONSUMER_SECRET");
String signedRequestJson = SignedRequest.verifyAndDecodeAsJson(signedRequest[0], yourConsumerSecret);
%>
3) Querying(Working):
function doFunction(){
var csId =sr.context.environment.parameters.caseId;
var queryUrl= sr.context.links.queryUrl+"?q=SELECT+CaseNumber,+Type,+Subject+from+case+where+id='"+csId+"'";
Sfdc.canvas.client.ajax(queryUrl,
{client : sr.client,
success : function(data){
//alert(data.payload.records[0].caseNumber);
}});
} }
**4) Calling Rest Resource(Not Working):**
function doFunctionAttachRest(){
var url = "https://ap1.salesforce.com/services/apexrest/PR_DEV/insertEXTArt/newArticles";
var body = null;
Sfdc.canvas.client.ajax(url,
{client : sr.client,
token : sr.oauthToken,
method: 'POST',
contentType: "application/json",
data: '{"Name" : "Californias"}',
success : function(data) {
alert('requst sent'+data.status);
if (201 == data.status) {
alert("Success");
}
}
});
}}