RhinoIO.js
资源名称:oa.rar [点击查看]
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:3k
源码类别:
OA系统
开发平台:
Java
- /*
- Copyright (c) 2004-2006, The Dojo Foundation
- All Rights Reserved.
- Licensed under the Academic Free License version 2.1 or above OR the
- modified BSD license. For more information on Dojo licensing, see:
- http://dojotoolkit.org/community/licensing.shtml
- */
- dojo.provide("dojo.io.RhinoIO");
- dojo.require("dojo.io.common");
- dojo.require("dojo.lang.func");
- dojo.require("dojo.lang.array");
- dojo.require("dojo.string.extras");
- dojo.io.RhinoHTTPTransport = new function () {
- this.canHandle = function (req) {
- if (dojo.lang.find(["text/plain", "text/html", "text/xml", "text/javascript", "text/json", "application/json"], (req.mimetype.toLowerCase() || "")) < 0) {
- return false;
- }
- if (req.url.substr(0, 7) != "http://") {
- return false;
- }
- return true;
- };
- function doLoad(req, conn) {
- var ret;
- if (req.method.toLowerCase() == "head") {
- } else {
- var stream = conn.getContent();
- var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream));
- var text = "";
- var line = null;
- while ((line = reader.readLine()) != null) {
- text += line;
- }
- if (req.mimetype == "text/javascript") {
- try {
- ret = dj_eval(text);
- }
- catch (e) {
- dojo.debug(e);
- dojo.debug(text);
- ret = null;
- }
- } else {
- if (req.mimetype == "text/json" || req.mimetype == "application/json") {
- try {
- ret = dj_eval("(" + text + ")");
- }
- catch (e) {
- dojo.debug(e);
- dojo.debug(text);
- ret = false;
- }
- } else {
- ret = text;
- }
- }
- }
- req.load("load", ret, req);
- }
- function connect(req) {
- var content = req.content || {};
- var query;
- if (req.sendTransport) {
- content["dojo.transport"] = "rhinohttp";
- }
- if (req.postContent) {
- query = req.postContent;
- } else {
- query = dojo.io.argsFromMap(content, req.encoding);
- }
- var url_text = req.url;
- if (req.method.toLowerCase() == "get" && query != "") {
- url_text = url_text + "?" + query;
- }
- var url = new java.net.URL(url_text);
- var conn = url.openConnection();
- conn.setRequestMethod(req.method.toUpperCase());
- if (req.headers) {
- for (var header in req.headers) {
- if (header.toLowerCase() == "content-type" && !req.contentType) {
- req.contentType = req.headers[header];
- } else {
- conn.setRequestProperty(header, req.headers[header]);
- }
- }
- }
- if (req.contentType) {
- conn.setRequestProperty("Content-Type", req.contentType);
- }
- if (req.method.toLowerCase() == "post") {
- conn.setDoOutput(true);
- var output_stream = conn.getOutputStream();
- var byte_array = (new java.lang.String(query)).getBytes();
- output_stream.write(byte_array, 0, byte_array.length);
- }
- conn.connect();
- doLoad(req, conn);
- }
- this.bind = function (req) {
- var async = req["sync"] ? false : true;
- if (async) {
- setTimeout(dojo.lang.hitch(this, function () {
- connect(req);
- }), 1);
- } else {
- connect(req);
- }
- };
- dojo.io.transports.addTransport("RhinoHTTPTransport");
- };