如何从触发器调用谷歌自定义搜索Web服务并解析响应以保存在我的sObject中

时间:2016-04-21 09:44:16

标签: salesforce

global class CalloutSevicesQuery implements Database.Batchable<sObject>, Database.AllowsCallouts{
    Public String Query;
    Public String ID;
    public string Body;
    global  CalloutSevicesQuery(String QueryID)
    {
        ID = QueryID;
    }

    global Database.QueryLocator start(Database.BatchableContext BC)
    {
           Query='SELECT id, BodyTxt__c,SubjectTxt__c FROM CustomEmailObj__c where id =:ID';
           return Database.getQueryLocator(Query);

    }

    global void execute(Database.BatchableContext BC,List<CustomEmailObj__c> CusEmail)
    {

        String url = 'http://google.com/#q=';

        for(CustomEmailObj__c C : CusEmail){
        Body=C.BodyTxt__c;   
        System.debug('333'+Body);
        }
        Body= EncodingUtil.urlEncode(Body, 'UTF-8');
        // build callout
        url += Body; 
        Http h = new Http();
        HttpRequest req = new HttpRequest();
        req.setEndpoint(url);
        req.setMethod('GET');
        req.setTimeout(60000);
       // system.debug('!2222'+req);

        HttpResponse res = h.send(req);

       Integer statusCode = res.getStatusCode();
      // system.debug('!1111'+statusCode);
       String statusName = res.getStatus();
       //system.debug('!33333'+statusName);

    }
    global void finish(Database.BatchableContext BC)
    {

    }

}

我应该使用哪个端点 url ?因为我现在正在status 301. 我想解析存储在body变量中的字符串到Google搜索引擎

1 个答案:

答案 0 :(得分:0)

对我来说,它适用于:

https://www.google.com

当然,您还必须在远程站点设置中设置此端点 如果我在开发者控制台中执行以下代码:

String url = 'https://www.google.com/#q=';
String body = 'hallo';
url += Body; 
Http h = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint(url);
req.setMethod('GET');
req.setTimeout(60000);
HttpResponse res = h.send(req);
Integer statusCode = res.getStatusCode();
system.debug(statusCode);
String statusName = res.getStatus();
system.debug(statusName);

结果是:

Debug | 200
Debug | OK