2017-09-15 9 views
2

J'essaie de publier JSON sur le serveur mais le code ne fonctionne pas. J'ai trouvé un exemple pour publier JSON avec Actionscripts 3 mais j'ai besoin de définir le type de contenu dans le code. Je poste mon code de test ici.Actionscripts 3 POST JSON avec en-tête de contenu

J'ai testé url + header + body dans firefox RESTClient et ils fonctionnent. [1] Je suis sûr URL est vrai et travailler dans un autre endroit, mais ici, je reçu l'erreur "URL Erreur d'ouverture"

URL [[enter image description ici] [1]!]: » https://api.thinger.io/v2/users/ *** "

contenu en-tête: "application/json"

corps: {" dans ": true}

import flash.display.Sprite; 
import flash.events.*; 
import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.net.URLRequestHeader; 
import flash.net.URLRequestMethod; 
import flash.net.URLVariables; 


var loader: URLLoader; 

function ATN() { 
    loader = new URLLoader(); 
    configureListeners(loader); 

    var header: URLRequestHeader = new URLRequestHeader("Accept", "application/json"); 
    var request: URLRequest = new URLRequest("https://api.thinger.io/v2/users/***"); 
    request.data = new URLVariables("in:true"); 
    request.method = URLRequestMethod.POST; 
    request.requestHeaders.push(header); 
    try { 
     loader.load(request); 
    } catch (error: Error) { 
     trace("Unable to load requested document."); 
    } 

} 
function configureListeners(dispatcher: IEventDispatcher): void { 
    dispatcher.addEventListener(Event.COMPLETE, completeHandler); 
    dispatcher.addEventListener(Event.OPEN, openHandler); 
    dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
    dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
    dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
    dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
} 

function completeHandler(event: Event): void { 
    var loader: URLLoader = URLLoader(event.target); 
    trace("completeHandler: " + loader.data); 
} 

function openHandler(event: Event): void { 
    trace("openHandler: " + event); 
} 

function progressHandler(event: ProgressEvent): void { 
    trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); 
} 

function securityErrorHandler(event: SecurityErrorEvent): void { 
    trace("securityErrorHandler: " + event); 
} 

function httpStatusHandler(event: HTTPStatusEvent): void { 
    trace("httpStatusHandler: " + event); 
} 

function ioErrorHandler(event: IOErrorEvent): void { 
    trace("ioErrorHandler: " + event); 
} 

ATN(); 

eRREUR:

Err ou: Erreur # 2101: La chaîne transmise à URLVariables.decode() doit être une chaîne de requête codée en URL contenant des paires nom/valeur.

en cas d'erreur $/throwError()

à flash.net::URLVariables/decode()

à flash.net::URLVariables()

à ATN_fla :: MainTimeline/ATN()

à ATN_fla :: MainTimeline/frame1()

EDIT:

function ATN() { 
    loader = new URLLoader(); 
    configureListeners(loader); 

    var header: URLRequestHeader = new URLRequestHeader("Accept", "application/json"); 
    var request: URLRequest = new URLRequest("https://api.thinger.io/v2/users/***"); 
    request.data = new URLVariables(); 
    var postData: Object = {"in": true}; 
    request.data = JSON.stringify(postData); 
    request.method = URLRequestMethod.POST; 
    request.requestHeaders.push(header); 
    try { 
     loader.load(request); 
    } catch (error: Error) { 
     trace("Unable to load requested document."); 
    } 

} 

SORTIE: openHandler: [Type d'événement = bulles "ouvertes" = false cancelable = false eventPhase = 2] progressHandler chargé: 44 Total: 44

EDIT 2:

function ATN() { 
    loader = new URLLoader(); 
    configureListeners(loader); 

    var header: URLRequestHeader = new URLRequestHeader("Accept", "application/json"); 
    var request: URLRequest = new URLRequest("https://api.thinger.io/v2/users/***"); 
    var postData: Object = {"in": true}; 
    request.data = JSON.stringify(postData); 
    request.method = URLRequestMethod.POST; 
    request.requestHeaders.push(header); 
    try { 
     loader.load(request); 
    } catch (error: Error) { 
     trace("Unable to load requested document."); 
    } 

} 

SORTIE 2 :

openHandler: [Type d'événement = bulles "ouvertes" = false cancelable = false eventPhase = 2] progressHandler chargé: 44 Total: 44

Erreur d'ouverture URL 'https://api.thinger.io/v2/users/ ***'

httpStatusHandler: [HTTPStatusEvent type = "httpStatus" bulles = false cancelable = false eventPhase = 2 status = 400 redirigée = false responseURL = null]

ioErrorHandler [IOErrorEvent type = "ioError" bubbles = faux cancelable = faux eventPhase = 2 text = "Erreur # 2032: Erreur de flux. URL: https://api.thinger.io/v2/users/ *** "]

+0

C 'erreur # 2032: erreur flux URL:. https://api.thinger.io/v2/users/***'tells vous que l'URL n'a pas été trouvée (URL n'existe pas) (2) ** https: //api.thinger.io/** est-il censé être une URL valide?Je reçois un _ "404 Not Found" _ alors comment des dossiers comme 'v2' et' users' existent-ils? –

+0

L'URL fonctionne correctement. Je l'ai testé dans firefox RESTClient. ici j'ai enlevé une partie de l'URL. –

+0

J'ai changé les données JASON et l'erreur précédente a disparu. maintenant une nouvelle erreur apparaît. –

Répondre

0

L'erreur est lors de l'analyse de la chaîne que vous fournissez au constructeur URLVariables.URVVariables est seulement pour la construction de paires nom/valeur.Si vous voulez envoyer JSON simplement définir la propriété de données directement :

var postData:Object = { "in": true }; 
request.data = JSON.stringify(postData); 
+0

Merci pour la réponse, j'ai changé le code similaire à la section EDIT, mais une erreur s'est produite. Mon code change-t-il vrai? –

+0

Quelle erreur s'est produite? Vous n'avez fourni aucune information sur votre problème. – Michael

+0

Est-ce que mon nouveau code est vrai? Vous pouvez voir une nouvelle erreur sous la section EDIT. –