flash 与 RESTful

[说明: 本文为http://www.smithfox.com原创, 转载请注明原文, 谢谢]

遵循RESTful做web service有很多的好处, 但是要想在flash中应用RESTful client有些问题, 这篇文章带你大概了解有什么问题, 以及可能的解决方法. 有错误的地方, 欢迎大家指正.

如果先想了解RESTful是什么, 可以看这篇著名的论文:

http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

网上也有翻译的 REST_cn.pdf

flash做RESTful client有什么问题?

你可以看这个blog链接:

http://www.lookmumimontheinternet.com/blog/?p=63

可以归纳一下,有以下几点:

1. URLLoader只支持GET POST, 不支持PUT DELETE

2. empty body POST, flash会自动变成GET

            variables = new URLVariables();
            variables.fixFlexGETIssueHoldPlace= "neveruseit";
            request.data = variables;

3. 只有在POST方式下才允许加入自定义的HTTP header,

request.requestHeaders = [
    new URLRequestHeader("X-HTTP-Method-Override", "PUT"),
    new URLRequestHeader("Accept", "application/json")
];

4. 无法overwrite一些重要的默认HTTP header,比如"Accept", 这个对RESTFul base on HTTP来说也比较重要.

其实你是可以加入的, 只是有两个"Accept" HTTP header,一个是你加的, 一个是flash自动加的, 根据Servlet的标准, 重复的HTTP header, 只会取前面一个, 问题是flash自动加的总是在user header的前面.

5. 没有严格的http_status返回值,比如404, 500之类的错误, http.status为0

如果你之前已经找过相关解决方案, 你一定知道有一个开源项目as3httpclientlib 可以解决上面几个问题.

但实际上没有那么乐观, 因为你仔细看as3httpclientlib项目首页(http://code.google.com/p/as3httpclientlib/), 有一条:

Common questions:

  • In order to use flash.net.Socket in a Flash sandbox environment, you need to have a flash socket policy server. (AIR does not have this restriction.) Look athttp://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html. To debug in the environment, I would use a standalone flash debug player with logging configured and you will see it attempt to connect to flash socket policy server at port 843. Because of this restriction, this library might be more suited for AIR apps.
  • HTTPS doesn't always work. There are some minor bugs with the as3crypto library, so for example https at yahoo and yahoo owned domains (like delicious) don't currently work. 

这个问题大概是说, flash player的sandbox安全机制需要有策略文件crossdomain.xm在server,发布l默认843端口,也可定制, 但定制的必须是端口1000以上,

总之你是不可以用 port 80来发布这个crossdomain.xml了, as3httpclientlib用的是AS3 flash.net.Socket库, 所以即使你这个swf是网站内部的(也就是不是crossdomain)也必须遵守sandbox机制. 但是AIR没有这个限制.

如果你正需要用flash(flex)做RESTful client, 你一定想应该有人会提出这个问题呀, 没错, 有人在2008年就已经提出这个问题了, 你也可以在 https://bugs.adobe.com/jira/secure/IssueNavigator.jspa?header=FP 上能看到不少人提出了类似的问题, 而且也有不少人vote. 顺便提一下, 这个是flash player部分的feature不是flex.

再让我们来看看adobe的大佬对这个问题是怎么说的 

http://www.infoq.com/cn/news/2010/08/rest-flash

大概意思就是, 我们就是这么玩的, 呵呵. adobe公司现在的关注点肯定不在这些小方面, 移动平台就够他搞了 :)

好吧, 到现在仍然有不少老外同学在争取让adobe改进, 也有不少的同学用一些办法尽量绕开这些问题.

方案1: 前台改用HTML和javascript, 和后台通讯.

方案2: 我开始提到的blog

http://www.lookmumimontheinternet.com/blog/?p=63

说实话用这个方案, 我没怎么看, 因为太绕了

方案3: actionscript通讯用as3httpclientlib, 为了不自找麻烦, 你肯定只能用在AIR平台上

方案3: 用flash(flex)的URLLoader通讯, 委曲后台成全flash player的种种变态的不足. (理论上是可行的, 正在试验)

有哪些委曲呢?

1>flash client的所有方法都会用POST发过来, 会再自定义一个新的HTTP header来表示 到底是什么method.

"restful-method" : "POST", "GET", "PUT", "DELETE"

这个思想来自于 google 的 "X-HTTP-Method-Override": http://code.google.com/apis/gdata/docs/2.0/basics.html , 但是你还想在GET的时候加入自己的Header的时候, 就不行了, 因为"X-HTTP-Method-Override"标准只加两个 "PUT"和 "DELETE".

所以干脆做个完全自定义的 "restful-method"

flash中加自定义header见blog:  http://automatastudios.com/flash-and-rest/

2>. flash client会再定义一个新的HTTP header来表示 "Accept", 后以需要完全忽略HTTP header "Accept"

"restful-Accept" : "application/json", "...."

3>. http status的处理, 思想和前面两个一样, 有待验证. 但是对RESTful影响不大

这些要求使得后台不能使用任何web service框架, 同时也谈不上什么标准化了.

顺带一个问题, flash也不支持原生的JSON (有第三方库可以解决, 但终归performance不会太高), 已经有人发起倡议投票让adobe支持.

https://bugs.adobe.com/jira/browse/FP-1631

大家也可以到adobe注册用户后, 对自己感兴趣的bug进行投票, 促使adobe改进.

smithfox | Thursday 11 November 2010 at 6:16 pm | | UI        | Used tags: ,

three comments

prada iphone 6 plus cases

Despite not offering any charging power for your phone, PopSlate adds a significant amount of bulk, like you’d typically find on battery cases. In fact, PopSlate is closely reminiscent of Mophie’s line of battery cases.

prada iphone 6 plus cases, (URL) - 23-04-’15 14:03
méNage résidentie

le spécialiste du Grand Ménage commercial à Montréal.

Nous vous offrons la gamme la plus complète du grand ménage commercial à
Montréal, Rive Nord et Rive Sud, et nous réajustons nos services à vos besoins.

Notre service couvre différends secteurs d’activité: Restaurants CPE et Garderies Privés Cliniques et Milieux Hospitaliers Concessionnaires automobiles Centres de Conditionnement Physiques Institutions Publiques et Ecoles
Compagnie entretien ménager
Faites-nous confiance, nous nous occupons de tout !

Que ce soit au travail ou à la maison, la propreté générale de l’environnement peut affecter votre santé, ainsi que
celle de votre entourage. C’est pourquoi un entretien soigné et régulier est nécessaire pour assurer efficacement la salubrité optimale du
domicile ou de l’espace de travail.
Compagnie de nettoyage
Si faire le temps vous manque pour faire un grand-ménage
il est temps d’appelerG.E.M ménage, notre compagnie de professionnels de nettoyage
!
Il n’est pas nécessaire de faire un grand ménage de
toute la maison pour avoir recoure à nos services, nous disposons aussi d’équipes de ménage professionnel et
d’experts en nettoyage pour des plus petits projets spécifiques
comme laver les vitres, laver les tapis, laver les murs seulement, les divans ou, nettoyer les conduits de ventilation.

Compagnie d’entretien ménager
G.E.M ménage une compagnie d’entretien ménager professionnel, spécialisée en grand-ménage, commercial, résidentiel et industriel spécialisée dans le grand-ménage à Montréal.

Nous offrons une gamme de services de ménage « à la carte » tel
que ménage après rénovation pour éliminer la poussière, ménage
déménagement pour emménager dans une résidence impeccable, ou simplement ménage du printemps résidentiel ou commercial etc…
Compagnie d’entretien ménager résidentiel
Confiez-nous votre maison pour un nettoyage complet à chaque visite.
G.E.M ménage est uneentreprise professionnelle de ménage à
domicile. Notre équipe est constitué professionnelsqui connaissent votre environnement et vos besoins de ménage résidentiel.
Ce sont des personnes pour qui votre satisfaction est primordiale.

Compagnie d’entretien ménager commercial
Il y a plusieurs avantages à choisir une compagnie de ménage commercial bien gérée avec des équipes spécialisées pour votre grand ménage : le travail est
mieux fait, de manière efficace et à taux concurrentiels.

Chaque équipe travaille avec des méthodes
équipements et produits efficaces, pour les tâches spécifiques qu’ils
ont à effectuer selon votre contrat de ménage.
Compagnie de nettoyage commercial
Dans le domaine du nettoyage commercial, nos spécialistes offrent un service complet de nettoyage quotidien ou
occasionnel, le lavage de vitres, le nettoyage de tapis, le
décapage, cirage et polissage de plancher.
Cet entretien ménager commercial est essentiel pour maintenir à son sommet notre image corporative.

Avec une expérience de plusieurs années sur la marché, G.E.M est aujourd’hui en mesure de répondre à des demandes spécifiques liées aux particularités de l’activité du
client.
Elle a développé un savoir-faire sectoriel qui lui permet d’offrir des
techniques pointues et adaptées au secteur d’activité dans lequel elle
intervient.
Que ce soit pour une intervention ponctuelle ou pour une collaboration sur le long terme, le niveau d’exigence et de professionnalisme dispensé par les agents de G.E.M Québec reste le
même ! En effet, c’est ce souci du détail et de l’approche qualitative qui fait aujourd’hui la force de l’entreprise de nettoyage.

Notre savoir-faire en nettoyage ainsi que notre expérience
permettent de vous offrir des résultats inégalés, à prix plus que
compétitif.
Tout au long de votre relation avec G.E.M ménage,
vous êtes suivis par un responsable clientèle dédié, qui est le garant de votre satisfaction. Il vous appellera régulièrement pour suivre la qualité des prestations effectuées et assurer votre entière
satisfaction.
Pour toutes demandes d’intervention, les techniciens vous proposent des devis gratuits et sur mesure en moins de 48 heures !

Notre expérience et notre maîtrise de la méthode vous assurent le meilleur nettoyage à
tout coup. Laissez-vous étonner par la puissance de notre nettoyage pour entretenir
vos locaux !
Faites confiance à nos spécialistes de nettoyage
et confiez vos locaux à nos experts réputés contactez-nous dès aujourd’hui !

méNage résidentie, (URL) - 20-06-’17 13:14
menage residentiel

A Partir de 199$ Mensuel
A Partir de 199$
Lavabe de vitres
Lavage de tapis
Lavage de Tapis divans
Lavage de Vitres
Promotion
Grand ménage a 199$
Meilleur Prix
Résidenteil Commercial
Entretien Ménager Résidentiel et Commercial

Jouez sans hésitation la carte santé pour vous-même maqis aussi au bénéfice de votre entourage :
Choisir G.E.M. et partager son engagement pour la protection dde l’environnement, c’est
vous épargner dés à présent les dommages
des produits chimiques à la rémanence prononcée et opter
résolument pour une qualité de vie accrue dans un milieu sain, car
exempt de tou reliquat de composé toxique et sournois !
Noous assurons uun service de prestations sur mesure, individualisé, de haute fiabilité.


Déchargez-vous des charges de planification, économisez et retrouvezz tranquillité d’esprit et
sécurité en souscrivant avec G.E.M un avantageux contrat d’entretien périodique.

Nouss répondrons à toute demande et établirons
un devis parfaitement adapté à vos besoins.
G.E.M offre unee large gammne de travaux d’entretien ménager.
Nous offrons à toute heuure un service d’urgence.

Nous saurons satisfaire tous vos besoins, qu’ils sooient résidentiels
ou professionnels, ponctuels ou réguliers. Les équipes de
professionnels chevronnés de G.E.M sauront répondre à vos
exigences. L’excellente réputation de G.E.M est encore confortée par l’utilisation exclusive de produits
certifiés écologiques, respectueux de votre environnement,
tout comme de vos équipements et surfaces (bois, inox, marbre, carrelage,
verre, porcelaine, écrans) !
Cheez G.E.M, nous accordons une grande importance au respect
des horaires et durées d’intervention.
G.E.M est profondément honoré de la confiance quee vous avez placée en lui.

Pourquoi faire appel à une multitude d’intervenants alors que vous pouviez confier à G.E.M la réalisation de
toutes ces tâches ménagères ?

Simplifiez-vous la vie et gagnez en tranquillité d’esprit !

Regroupez la réalisation de ces travaux chez uun seul prestataire !
Poour votre plus grande satisfaction, faites dde G.E.M votre unique intervenant qui pourra assurer
tout au long dee l’année la continuité
d’un service de haute qualité et à la carte !


Entretien ménager résidentiel ,Entretien ménager commercial ,Grand ménage
résidentiel et commerecial ,Lavage de Vitres ,Lavage dee tapis ,Décapage et Ciraage de planchers et Plus

….N’hésitez pas à nous Cotacter 1 866 809 0550/ 514 616 4927/ 450 915 9063
Plus d’informations

Une expertise unique pour des locaux mieux entretenus !——-514 616 4927

Partager
Promotion grand ménage
55$
199$
199$

Nom
Nom
E-mail
E-mail
Numéro dde téléphone
Numéro de téléphone
Adresse
Adresse
Objet
Objet
Message
Message
Envoyer

N’hésitez Pas a Nous Contacter
1866 809 0550 / 514 616 4927
Satisfaction Garantie
Que ce soit au bureau, au sein de l’entreprise ouu
aau foyer, nous aspirons tous à évoluer, travailler dans un milieu
à la fopis agréable et sain. La vie moderne,
noos obligations professionnelles accapasrent l’essentiel de notde temps et c’est tout naturellement que nous souhaitons réduire celui consacré aux tâches ménagères.

C’est là que G.E.M intervient !
Professionnelle de l’entretien, notre dynamique entreprise saura réaliser ppur vous l’ensemble
des travaux ménagers. G.E.M. s’engage surr une prestation de qualité !

Notre équipe de spécialistes chevronnés accomplira un travail
à la fois soigné, rapide eet économique.
De plus, nous ugilisons exclusivement ddes produits écologiques ett
hautement performants, issus des toutes dernières technologies.

G.E.M Ménage met ses compétences à votre service pur l’entretien courant et occasionnel dde vos résidences et locaux professionnels.

Nos équipes de professionnels vous proposent dess prestations de qualité
adaptées à voos besoins.
Grille dee tarifs abordables : Nos prix sont optimisés pour avoir lee meilleur rapport qualité/prixsuivant vos besoinss et les spécifications de votre résidence .

Un personnel expérimenté et qualifié : Nos franchisés et équipes de nettoyage sont des professionnels formés pour répondre à vos besoins lees plus spécifiques.

Assurance responsabilité civile : Nos franchisés sont couvrts par
une assurance responsabilité civile garantissant less accidents ou dommages
éventuels.
Équipements et produits : Noos équipes utilisent leurs propres produits et équipements.

Produits de nettoyage biodégradables et équipements : Protéger
l’environnement est pour nous un objectif essentiel.
Nouss n’utilisons que des produits biodégradables, équipements
et procédés respectueux de l’environnement .
Programmes de services dynamiques : Nous sommes à l’écoute permanente des
exigences de nos clientss et réalisons des enquêtes dynamiques de satisfaction de manière à améliorer continuellement la qualité de nnos services.

Garantie : G.E.M s’engage à ce quue ses clients soient entièrement satisfaits de la réalisation de ses travaux d’entretienménager, même ssi cela
nécessite de faire le travail deux fois
Sans engagement de votre part : Nos services résidentiel n’appellent la signature d’aucun contrat.
Vous pouvez programmer un nettoyage ou annuler notre visitre moyennant unn simple appel téléphonique.

Nous avons développé une structure de travail unique pour
répondre aux exigences spécifiques de nos clients.

En faisant appel à une entreprise telle que G.E.M Québec, vous avez
la garantie d’un nettoyage régulier et de qualité
professionnelle. Les prestations sont effectuées par des agents d’entretien qualifiés qui sont
formés aux technmiques de nettoyage propres à vos types de locaux.
Il est important de noter que les intervenants sont employés directement parr G.E.M Québec, et non par vos
soins. Vous vous épargnez ainsi de outes lees formalités d’employeur telles que notamment
les déclarations d’embauches, gestion des congés et contraats de travail.
La mise en place est réalisée avec unn responsable d’agence G.E.M Québec quui restera par
la suite votre intelocuteur privilégié. C’est llui qui effectuera le suivi de vos prestations par le biaqis d’un système de télépointage
associé à un outil très précis de gestion interne ainsi
que des visites qualités inopinées. Le responsable d’agence
est très attentif quant au niveau de satisfaction de sses clients eet meet
tout en place pour le maintenir constamment auu plus haut.

De l’entretien courant ddes sols,vitres et meubles -au netoyage très
spécifique dee matériel professiojnel ; G.E.M Québec prend en charge l’intégralité de votre entretien ménager.
Que ce soit pour vos bureaux, hôtels et surfaces de ventes qui demandent un entretien méticuleux car représentants dde votre enseigne ou espaces communs d’immeubles
qui connaissent un fort tux de passage, G.E.M Québec répond à tous vos besoins.

Faire appel à G.E.M, c’est l’assurance d’un service de qualité,
réalisé par un Personnel recruté ssur la base de critères rigoureux.
Ceux-ci sont formés tout auu long dde leur carrière et des enquêtes
contrôle de qualité sont régulièrement pratiquées.
Que ce soit au travail ou à la maison, la propreté générale
de l’environnement peut affecter votre santé, ainsi que celle de vvotre entourage.

C’est pourquoi un entretien soigné et régulier est nécessaire pour assurer efficacement laa salubrité optimale duu domicile ou dde l’espace de travail.
Basée à Montréal, G.E.M Ménage est une compagnie phare intervenant dans le
secteur du nettoyage et de l’entretien commercial et
résidentiel. Hautement qualifiés, les professionnels de G.E.M.
ggarantissent un environnement propre et sain au domicile
comme au bureau avfec des services performants tels que paar exemple, l’époussetage, l’utilisation d’aspirateur, le nettoyage
et désinfection de salles de bain ou cuisines et autres tâches générales d’entretien. Chez G.E.M, nous ahcordons
une grande importance au respect dees horaires et durées d’intervention.

menage residentiel, (URL) - 24-06-’17 19:50
(optional field)
(optional field)
为阻止垃圾广告, 请在提交评论前, 回答一个简单问题(Please answer an simple question)
Remember personal info?
Notify
Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.