java rest调用_salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce...

本篇参考Trail教程:

有的时候我们需要在salesforce中引入外部的方法或者数据,这样就需要访问外部的Services,目前常用的访问方式有两种:

1.SOAP方式:Web Service通过XML方式调用SOAP Web服务器;

2.REST方式:Http通过JSON使用REST方式调用服务器。

这两种Callouts使用原理类似,简单的可以理解像服务器发送一个请求,然后服务器返回一个响应。基于WSDL的callouts适用于SOAP方式,HTTP方式可以使用任何的HTTP service,SOAP或者REST都可以。

这两种方式能选择Http方式尽量选择Http方式。

下面来了解一下REST方式获取外部Service数据以及其他Service访问Salesforce数据操作。

一.REST方式获取外部Service数据

REST方式主要原理如下图所示。使用REST方式主要步骤如下:

dd553ea42a848782370600b407382f04.png

salesforce通过REST方式访问外界站点步骤如下:

1.将Web Service的授权端点地址添加到Remote Site中:setup->Administer->Security Site Settings->Remote Site Settings。

salesforce提供了两个测试URL,将两个测试的URL添加到Remote Site中。两个URL分别为:

92520dbe6ea25adb78e3383ff04b8bb0.png

2.代码进行访问

通过HTTP方式可以使用以下方法进行相关操作的访问

b2be582a10e5c226f92b07066037fdcc.png

https://th-apex-http-callout.herokuapp.com/animals远程站点JSON内容如下{"animals":["majestic badger","fluffy bunny","scary bear","chicken"]}

在Eclipse中使用匿名块编写代码实现访问:window->show view->Other->Execute Anonymous即可打开匿名块。

GET方式获取数据:

Http http = newHttp();

HttpRequest request= newHttpRequest();

request.setEndpoint('https://th-apex-http-callout.herokuapp.com/animals');

request.setMethod('GET');

HttpResponse response=http.send(request);//If the request is successful, parse the JSON response.

if (response.getStatusCode() == 200) {//Deserialize the JSON string into collections of primitive data types.

Map results = (Map) JSON.deserializeUntyped(response.getBody());//Cast the values in the 'animals' key as a list

List animals = (List) results.get('animals');

System.debug('Received the following animals:');for(Object animal: animals) {

System.debug(animal);

}

}

输出的结果如下:

fcb885c3e3aa00501b18d5e1ae51ece5.png

其他方式自行测试。

二.Salesforce作为REST Service供java访问(可以供其它语言访问,这里只对java展示,因为我只会java)

有的时候我们需要在其他平台上获取sfdc端的数据,比如做android项目需要访问sfdc数据,那样就需要Salesforce作为Service,java端通过http获取并对数据进行相关操作。步骤如下:

1)新建一个App,然后创建Connected App:

setup->Build->Create->Apps.先new一个app,正常new完以后new一个Connected App,设置Enable OAuth Settings为true,截图如下所示:

23c6af27ff9ac3c8601463131ba04734.png

java访问sfdc 的Service的时候需要用到Consumer Key以及Consumer Secret这两项。

2)sfdc端rest service构建:这里我们以Goods__c进行操作,主要方法有添加一条Goods,通过Id获取Goods,通过PageNumber获取指定条数开始的Goods数据,修改一条Goods以及删除一条Goods。

这里对常用的注解进行解释:

1.@RestResource:曝光此类作为REST资源;

2.@HttpGet:曝光方法作为REST资源,当有Http get请求发送时,此注解对应的方法会被执行;

3.@HttpPost:Http post 请求发送时,此注解对应的方法会被执行;

4.@HttpDelete:当有Http delete请求发送时,此注解对应的方法会被执行;

5.@HttpPut:当有Http put请求发送时,此注解对应的方法会被执行;

6.@HttpPatch:当有Http patch请求发送时,此注解对应的方法会被执行。

因为http有请求时按照请求方式来对应相关方法,所以一个类中上述标签只能存在一个,即不能存在两个方法标注@HttpRequest等。

1 /*

2 * 使用salesforce通过REST方式作为webservice,需要以下几点:3 * 1.类和方法需要global,方法需要静态4 * 2.类需要通过RestResource(UrlMapping='/page/*')注解声明5 * 3.@HttpGet和@HttpDelete不能有形参,可以通过URL?param或者URL/param方式传过来参数6 */

7 @RestResource(UrlMapping='/Goods/*')8 global classGoodsRESTController {9 global static final Integer PAGE_SIZE = 20;10 @HttpGet11 global static ListgetGoodsByIdOrGoodsList() {12 RestRequest request =RestContext.request;13 //grab the goodsId from the end of the URL

14 String currentPage = reques

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值