worklight适配器-http

因为其他事,没有更新

前一篇文章是sql适配器,与DB的交互,本章主要是http方式交互。

方式很简单,建立适配器,选择http模式,名称,http15,对应的xml文件和js文件与上面类似,一个是配置,一个是实现。

<?xml version="1.0" encoding="UTF-8"?>

<wl:adapter name="http15"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:wl="http://www.worklight.com/integration"
	xmlns:http="http://www.worklight.com/integration/http">

	<displayName>http15</displayName>
	<description>http15</description>
	<connectivity>
		<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
			<protocol>http</protocol>
			<domain>10.0.0.15</domain>
			<port>80</port>			
		</connectionPolicy>
		<loadConstraints maxConcurrentConnectionsPerNode="2" />
	</connectivity>

	<procedure name="getDataList"/>

	<procedure name="getStoriesFiltered"/>
	
</wl:adapter>

如上,里面的内容都好理解,走的协议,http还是https,domain,域名,我测试的局域网的地址,10.0.0.15,port端口号。getDataList则是要实现的方法

 

function getDataList(id) {
	var input = {
		    method : 'get',
		    returnedContentType : 'HTML',
		    path : "RTDServer/rtdViewAndroid.ejf?cmd=index&companyCode="+id
		};

		return WL.Server.invokeHttp(input);
}


function getStoriesFiltered(interest) {
	var input = {
		    method : 'get',
		    returnedContentType : 'xml',
		    path : "rss.xml",
		    transformation : {
			    type : 'xslFile',
			    xslFile : 'filtered.xsl'
		    }
		};
		
		return WL.Server.invokeHttp(input);
}


这里面要注意的内容多一些:

mothod:获取方法,get,还是post,至于二者区别,我也不能说的很清晰,怕误导大家,自己查去吧
returnedContentType :返回数据的格式,支持json,xml,http,plain,注意,既然选定的一种格式,就要确认,你请求的地址必须提供相应的接口,返回对应格式的内容,否则,会报错。我在这里就被耽误了一小下。本例中选用的是html格式。

path:请求的明确地址,url的一个地址,可以存在变量,如本例中的&companyCode="+id

parameters: 使用的参数,本例中path使用的是变量,所以,没用参数这个选项,如果用了,则是 parameters : { 
             'companyCode' : id
         }, 这种格式

body:当方式是post时,要指定相应的内容

transformation: 转化数据的参数,包括 XSL 文件的位置和转化的格式

定义完上述内容,可以调试适配器,invoke worklight procedure。

成功结果如下:

{
   "errors": [
   ],
   "html": {
      "body": {
         "CDATA": "唐山二厂\n2012-11-22 11:28:28\n2012-11-22 11:28:36\n1.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,1.0,1.0,1.0,0.0,1.0,


尝试在客户端代码中调用,客户端js脚本:

function getHttp15(id)
{
	var invocationData = {
			adapter : 'http15',
			procedure : 'getStories',
			parameters  : [id]
	};
	
	WL.Client.invokeProcedure(invocationData, {
		onSuccess : httpLoadSuccess,
		onFailure : httpLoadFailure,
		});
}


function httpLoadSuccess(result)
{
	if (result.invocationResult.html.body.CDATA.length>0)
	{
		httpResult = result.invocationResult.html.body.CDATA;
	}	
}

function httpLoadFailure(result)
{
	alert("读取失败");
}


这里需要注意的事,在获取数据时,一定要想着返回数据的格式,因为不同格式的数据对应的结构是不一样的,本例中用的是html,获取数据相应的结构是

result.invocationResult.html.body.CDATA,如果是plain,则获取数据结构是result.invocationResult.text,json,xml是标准化格式,各位可以去实践一下。

至此,在手机终端可以获取到远程的数据,至于怎么加工,是自己的事情了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值