2017-11-20 5 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 문자열을 보내는 방법 만 설명합니다.