imobile_for_reactnative
Version:
iMobile for ReactNative,是SuperMap iMobile推出的一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。
79 lines (63 loc) • 1.65 kB
text/typescript
import { HttpRequest, HttpRequestParam, HttpRequestFailed } from "imobile_for_reactnative"
import { Fetch } from '../utils/HttpRequest/Fetch'
/** 资源不存在时的返回 */
interface ResourceNotFound {
succeed: false,
error: {
code: 404,
errorMsg: string
}
}
// TODO 具体需要时再补全此接口
interface SceneInfo {
name: string
layers: any[]
camera:any
}
export class IServerService {
/** 网络请求类,单独设置方便替换 */
httpRequest: HttpRequest = new Fetch()
cookie?: string
constructor(httpRequest?: HttpRequest) {
if(httpRequest) {
this.httpRequest = httpRequest
}
}
getCookie = (): string | undefined => {
return this.cookie
}
setCookie = (cookie?: string): void => {
this.cookie = cookie
}
/** 获取iserver发布的场景服务信息 */
getSceneInfo = async(datasetUrl: string): Promise<SceneInfo | HttpRequestFailed> => {
try {
if(!datasetUrl.endsWith('json')) {
datasetUrl = datasetUrl + '.json'
}
const headers: HttpRequestParam['headers'] = {}
if(this.cookie) {
headers.cookie = this.cookie
}
const response = await this.httpRequest.request({
url: datasetUrl,
method: 'GET',
headers,
})
if('error' in response) {
return response
} else {
const result: SceneInfo | ResourceNotFound = await response.json()
if('error' in result) {
return {
error: '404'
}
} else {
return result
}
}
} catch(e) {
return { error: 'error'}
}
}
}