2017-11-20 8 views
0

クライアントにデータベースのログインとパスワードを共有するよう依頼しましたが、データベースに完全にアクセスできません(セキュリティ上の理由)。 彼は私のアプリケーションから来るすべてのデータを特定できる特定のキーを使ってこのURLを介してデータを投稿できるREST/JSONサービスを使用するように指示しました。AS3を使用したJSONへのデータの送信

は、ここに私がやったことだ:

var urlRequest:URLRequest = new URLRequest("the_url_using JSON service"); 
urlRequest.method = URLRequestMethod.POST; 

var urlvars: URLVariables = new URLVariables; 
urlvars.observer_name = "Test Coco"; 
urlvars.observation_number = "5433"; 

trace("urlvars = "+urlvars); 

urlRequest.data = urlvars; 

var urlLoader:URLLoader = new URLLoader(); 
urlLoader.addEventListener(Event.COMPLETE, onComplete); 
urlLoader.load(urlRequest); 

それがデータを送信していてそれは、働いているが、データのフォーマットが正しくないと思わ..

urlがこのエラーを返します:「オブザーバー名が欠落しています"

そして" trace (urlvars) "出力:

urlvars = observer%5Fname=Test%20Coco&observation%5Fnumber=5433 

だから私は問題が特殊文字などから来ていると思います( "observer_name"の結果は "observer%5Fname"と多くの%5を見ることができます)

どうすればこの問題を解決できますか?

+1

問題は不明です。 ** JSON **はデータ形式です。あなたは何も**それに送ることはできません。さらに、あなたのコードに** JSON **関連のものは何もありません。 ** URLVariables **はデータをURLエンコードされた文字列の形で送信します(正しいものです)、** JSON **の文字列ではありません。 – Organis

+0

urlRequestで使用しているURLはJSONサービスを使用しています。私はより詳細な私の投稿を編集します。 – steph45

+0

良い。それでは、あなたのコードにはJSONに関連するものは何もありません。 REST/JSONサービスとはおそらく、 '** {"observer_name": "Test Coco"、 "observation_number":5433} **のようなJSON文字列を生のPOSTデータとして送信する必要があることを意味します。 – Organis

答えて

1

JSON文字列は、汎用オブジェクトの文字列表現です。基本的にあなたが行く:

var anObject:Object = 
{ 
    "observer_name": "Test Coco", 
    "observation_number": 5433 
}; 

またはあなたがそれを

var anObject:Object = new Object; 

anObject['observer_name'] = "Test Coco"; 
anObject['observation_number'] = 5433; 

を構築することができ、その後、あなたが文字列に変換し、

var jsonString:String = JSON.stringify(anObject); 

urlRequest.method = URLRequestMethod.POST; 
urlRequest.data = jsonString; 

はそれについての詳細を読む要求するために添付する:https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/JSON.html

私はspを知りませんそのRESTサーバーのecificsとコードがの場合はがそのまま動作しない可能性があります。 POSTリクエストとしてJSON文字列を送信する方法についてのみ説明します。

関連する問題