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是標準化格式,各位可以去實踐一下。

至此,在手機終端可以獲取到遠程的數據,至於怎麼加工,是自己的事情了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章